This seems to be the easiest solution:
GetType =: 3 : 0
try.
0{ 18!:2 y
catch. datatype y end.
)
I don't like the idea of relying on an error to branch the output, but I don't
know any other way and this seems to output exactly what I need.
Thanks all.
> Date: Fri, 1 May 2015 10:18:38 +0800
> From: [email protected]
> To: [email protected]
> Subject: Re: [Jprogramming] Datatype of an Object
>
> use 18!:0 to test for locale name. eg.
> 18!:0 <'foo'
>
> Пт, 01 май 2015, Jon Hough написал(а):
> > Thanks,
> > It seems 18!:2 is more or less what I need.
> > However, it gives an error for Boxed literals. I think I will need to
> > wrap my verb in a try catch and if itcatches an error I know I am dealing
> > with a standard J type.
> >
> > You may be wondering why I would get myself intoa situation where I mistake
> > a boxed literal for an object, but I am creating data structures thatare
> > arrays of both Objects and standard J types. So I need to inspect each item
> > in the structureto see if it is a boxed variable or an object.
> >
> > > Date: Thu, 30 Apr 2015 21:06:01 -0400
> > > From: [email protected]
> > > To: [email protected]
> > > Subject: Re: [Jprogramming] Datatype of an Object
> > >
> > > You could look at the path of the object, with
> > >
> > > 18!:2 Obj
> > >
> > > Since the path is under the control of the user, you would have to know
> > > what you do with the path to be able to make sense of it. Often, the
> > > first atom in the path would tell you what you are looking for.
> > >
> > >
> > >
> > > An object (called a 'numbered locale' in the J docs) is not a boxed
> > > integer: it's a boxed string that contains all numberics. You could
> > > check for that with
> > >
> > > isnumloc =: *./@:e.&'0123456789'@>
> > >
> > > Henry Rich
> > >
> > > (Note that it is an error for the first character of a numbered locale
> > > to be '0').
> > >
> > >
> > > On 4/30/2015 8:57 PM, Jon Hough wrote:
> > > > It seems of I have an Object,e.g.Obj =: conew 'MyClass'
> > > > And later I want to get the type of Obj
> > > > datatype Obj
> > > > this returns "boxed", which is technically correct, but it seems
> > > > datatype lacks the introspection to look beneath the box at the object.
> > > > So is there a way to get the type (i.e. class name if possible) of an
> > > > object?
> > > > e.g. I have some variable Q (which happens to be an instance of
> > > > MyClass).Is there a way to create a verb, getTypeOf, such that
> > > > getTypeOf Q
> > > > returns 'MyClass'
> > > > I couldn't find anything in JForC on this. At the moment I am finding
> > > > it difficult to differentiate boxedintegers from objects.
> > > >
> > > > ----------------------------------------------------------------------
> > > > For information about J forums see http://www.jsoftware.com/forums.htm
> > > >
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
>
> --
> regards,
> ====================================================
> GPG key 1024D/4434BAB3 2008-08-24
> gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
> gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm