[Jprogramming] Test whether class member is primitive
Henry Rich
henryhrich at gmail.com
Tue Jul 10 02:52:16 UTC 2018
It looked to me that using
1 = 18!:0 :: _3:
would solve your problem.
Henry Rich
On 7/9/2018 10:50 PM, 'Jon Hough' via Programming wrote:
> Sorry for the lack of clarity. The answer is yes, a boxed numbered locale.
> Please see my last email (you may have missed it because we seemed to have sent at about the same time.)
> My contrived example shows the root of the problem.
>
> You are correct that this method is fragile, but I don't know any other method.
> Mixing up a boxed number locale with a boxed string of digits should never be an
> issue with any of my classes. If a variable is a boxed string of digits then it is safe to assume
> it as a locale.
>
> Anyway, my previous email gave a specific example of when this problem occurs, and what I
> need to do to fix it to some extent.
>
> Thanks,
> Jon
> --------------------------------------------
> On Tue, 7/10/18, Henry Rich <henryhrich at gmail.com> wrote:
>
> Subject: Re: [Jprogramming] Test whether class member is primitive
> To: programming at jsoftware.com
> Date: Tuesday, July 10, 2018, 11:36 AM
>
> Is an 'object' a boxed
> numbered locale? This is a yes-or-no question,
> and I think you are saying 'yes', but I
> want to be sure.
>
> Perhaps
> you should use 18!:0 :: _3: ?
>
> You will always have the problem of
> distinguishing a boxed string of
> digits
> from a locale-name.
>
> Looking
> at the path is a bad idea and fragile. Paths may be
> changed or
> set to empty based on the
> programmer's needs.
>
> Henry Rich
>
> On
> 7/9/2018 10:16 PM, 'Jon Hough' via Programming
> wrote:
> > 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 <henryhrich at gmail.com>
> wrote:
> >
> > Subject:
> Re: [Jprogramming] Test whether class member is primitive
> > To: programming at jsoftware.com
> > 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
>
>
> ---
> 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
---
This email has been checked for viruses by AVG.
https://www.avg.com
More information about the Programming
mailing list