By "object" i mean some variable instantiated with conew - not a J type.
I am writing an object serializer, and looked at
https://code.jsoftware.com/wiki/Scripts/Serialization
A modified version of this works somewhat, but it has problems with
if. a: -: c=. {.(copath ::(a:"_) y)-.<,'z' do.
...
else.
...
end.
the above test is to check whether some variable is an object or a J type.
It fails on some of my classes for the reasons I explained in my last email.
It seems 18!:0 works for the case I gave, but in general will not work,
e.g. if m__myOtherClass =: 1
18!:0 < m__myOtherClass
will give an rank error.
The serializer I am writing is 90% complete. It just fails when an object's
primitive member
variable is inherited from a parent class. Then my serializer thinks the member
is an object type, because
the primitive test,
a: -: c=. {.(copath ::(a:"_) y)-.<,'z'
fails.
--------------------------------------------
On Tue, 7/10/18, Henry Rich <[email protected]> wrote:
Subject: Re: [Jprogramming] Test whether class member is primitive
To: [email protected]
Date: Tuesday, July 10, 2018, 10:56 AM
I don't understand the term
'object'.
Does that
mean 'numbered locale'? If so, then a test for
objectness
would be
1 = 18!:0
Henry Rich
On
7/9/2018 9:41 PM, 'Jon Hough' via Programming
wrote:
> I want to test if a given member
variable of an object is primitive (e.g. one of the J
datatypes - literal, integer etc etc) or an object.
>
> coclass
'MyClass'
>
>
create=: 3 : 0
> m=:
'something'
> )
>
>
>
Here is one method:
>
> myClass =: '' conew
'MyClass'
> a: -: {. (copath
::( a:"_) m__myClass) -. <, 'z' NB. return 1
if primitive, 0 if an object.
>
> This works, except if the member is
defined in a parent class.
>
> coclass 'MyOtherClass'
> coinsert 'MyClass'
>
> create=: 3 : 0
> create_MyClass_ f. ''
> ''
> )
>
>
>
myOtherClass =: '' conew 'MyOtherClass'
> a: -: {. (copath ::( a:"_)
m__myOtherClass) -. <, 'z'
>
>
>
the above returns 0, but member is a primitive member of the
MyOtherClass instance. Ideally this
>
should return 1 in this case, since m is still a primitive
member of MyOtherClass.
>
> Any better way to test for primitive
members?
>
>
Thanks,
> Jon
>
----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
---
This email has been checked for viruses by
AVG.
https://www.avg.com
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm