Just to give a concrete example: If I have a hashmap object T. T ┌──┐
│24│ └──┘ And then I want to add some pair "keyX", <"24" to my hashmap, then later when I am testing what the values of all the entries of T are, I come across "keyX" and run GetType on <"24" and I think the value is a hashmap. Actually it's worse, because I think it is the parent hashmap, so if I tried to run some recursive functions on the values of T I may end up in an infinite loop because I continually reference T as the value of "keyX". Scary stuff. > From: [email protected] > To: [email protected] > Date: Fri, 1 May 2015 13:04:53 +0100 > Subject: Re: [Jprogramming] Datatype of an Object > > The problem is, I am working on a J hashmap/dictionary implementation. And > there seems little point if the hashmap can not contain another hashmap as a > value. But if it does contain such a value, it becomes necessary to be able > to differentiate it from just an ordinary boxed literal. > Using a GetType style of verb is a partial solution, but I wonder if I just > so happen to add a key value pair to my dictionary where the value is a boxed > literal that happens to have exactly the same look as another dictionary > object I have lying around. This could screw a lot of things up, because > GetType would and could interpret this value as the object, even though it > has nothing to do with it. This could actually screw everything up. Anyway, > it's the solution I'm using until I can find something better. > One workaround I am thinking of as I type (may not make sense), is to add all > created dictionaries to an array somewhere and reference everything from that > array. Then, somehow, if I add a key/value pair to my parent Dictionary, > where the value is another dictionary, the actual value to store could be an > index of the array, instead of the actual dictionary object. > > Regards,Jon > > > From: [email protected] > > Date: Fri, 1 May 2015 07:43:40 -0400 > > To: [email protected] > > Subject: Re: [Jprogramming] Datatype of an Object > > > > The other way is to structure your data so you know what you are working > > with. > > > > For example, maintain a parallel structure with the "type information" > > that you want to be tracking here. > > > > Thanks, > > > > -- > > Raul > > > > On Fri, May 1, 2015 at 1:26 AM, Jon Hough <[email protected]> wrote: > > > 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 > > ---------------------------------------------------------------------- > > 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
