Or maybe just a couple of arrays, e.g.

   titles=. 'balances';'first name';'last name'
   accts=.
(<"0]5?@$1000),.('Jon';'Dick';'Harry';'Sally';'May'),.'Smith';'Jones';'Black';'White';'Eye'
   accts
+---+-----+-----+
|689|Jon  |Smith|
+---+-----+-----+
|291|Dick |Jones|
+---+-----+-----+
|801|Harry|Black|
+---+-----+-----+
|724|Sally|White|
+---+-----+-----+
|388|May  |Eye  |
+---+-----+-----+
   accts{"1~titles i. <'balances'
+---+---+---+---+---+
|689|291|801|724|388|
+---+---+---+---+---+



On Wed, Jun 4, 2014 at 12:06 PM, Raul Miller <[email protected]> wrote:

> Yes.
>
> Using three arrays in J is about like using three variables in Java - often
> it's just the right way of doing things.
>
> Thanks,
>
> --
> Raul
>
>
>
> On Wed, Jun 4, 2014 at 11:57 AM, Jon Hough <[email protected]> wrote:
>
> > It's going to take me a while to understand what you've done.
> > "I'd be very interested in a concrete example of how using objects
> > simplifies matters."
> > Well, in this case, the objects just ties three related things together
> > (names and balance). Using three different arrays is a recipe for
> disaster,
> > and also gets very confusing, at least in a Java/C++ context. Perhaps in
> J
> > using three lists is the way to go?
> >
> >
> > > Date: Wed, 4 Jun 2014 11:43:50 -0400
> > > From: [email protected]
> > > To: [email protected]
> > > Subject: Re: [Jprogramming] More Object List Questions
> > >
> > > I suppose you could do something like this:
> > >
> > >    coclass 'Account'
> > >    create =: verb define
> > > balance =: 0
> > > fname =: ''
> > > lname =: ''
> > > )
> > >    coclass 'base'
> > >    list =. 5 $ < 'Account'
> > >    objs=. conew &> list
> > >    objs
> > > +-+-+-+-+-+
> > > |1|2|3|4|5|
> > > +-+-+-+-+-+
> > >    conames''
> > > 1         2         3         4         5         Account
> > >    (<''''''),~&.>(<'create_'),&.>(":&.>objs),&.><'_'
> > > +-----------+-----------+-----------+-----------+-----------+
> > > |create_1_''|create_2_''|create_3_''|create_4_''|create_5_''|
> > > +-----------+-----------+-----------+-----------+-----------+
> > >    ".&>(<''''''),~&.>(<'create_'),&.>(":&.>objs),&.><'_'
> > >
> > >
> > >
> > >
> > >
> > >    balance_1_
> > > 0
> > >    (<'balance_'),&.>(":&.>objs),&.><'_'
> > > +----------+----------+----------+----------+----------+
> > > |balance_1_|balance_2_|balance_3_|balance_4_|balance_5_|
> > > +----------+----------+----------+----------+----------+
> > >    ".&>(<'balance_'),&.>(":&.>objs),&.><'_'
> > > 0 0 0 0 0
> > >
> > > But this all seems rather clumsy compared to simply using arrays
> directly
> > > rather than this vector of object names, e.g.:
> > >
> > >    'bals fnms lnms'=.
> > >
> >
> (5$0);('Jon';'Dick';'Harry';'Sally';'May');<'Smith';'Jones';'Black';'White';'Eye'
> > >    bals
> > > 0 0 0 0 0
> > >    fnms
> > > +---+----+-----+-----+---+
> > > |Jon|Dick|Harry|Sally|May|
> > > +---+----+-----+-----+---+
> > >    lnms
> > > +-----+-----+-----+-----+---+
> > > |Smith|Jones|Black|White|Eye|
> > > +-----+-----+-----+-----+---+
> > >
> > > I'd be very interested in a concrete example of how using objects
> > > simplifies matters.
> > >
> > >
> > >
> > > On Wed, Jun 4, 2014 at 11:16 AM, Jon Hough <[email protected]>
> wrote:
> > >
> > > > I hope I'm not spamming the forum with my questions.
> > > > I am still getting my head around OOP in J.
> > > > My class:
> > > >
> > > > coclass 'Account'
> > > >
> > > > create =: verb define
> > > > balance =: 0
> > > > fname =: ''
> > > > lname =: ''
> > > > )
> > > > It's just a dummy 'Account' class with balance, first name and last
> > name.
> > > > I want to create several objects in a list:
> > > >
> > > > list =. 5 $ < 'Account'
> > > >
> > > > list
> > > >
> > > >
> > > >
> >
> ┌───────┬───────┬───────┬───────┬───────┐│Account│Account│Account│Account│Account│└───────┴───────┴───────┴───────┴───────┘
> > > >
> > > > So I have my list of 5 Accounts. Now I want to be able to access
> their
> > > > fields, functions by indexing the list.
> > > > e.g. in Java if I have an array of Accounts
> > > > Account[] accounts = new Account[5];
> > > > I can access the fields from the array index:
> > > > for(int i = 0; i<5; i++){
> > > >           accounts[i].fname = "No name given";
> > > > }
> > > > In J,
> > > > I tried the following:
> > > > create__(1{list)
> > > > |value error: create__
> > > > |       create__(1{list)
> > > > I tried to call the create function of the 2nd Account (index 1) of
> th
> > > > elist. It seems I can't append 1{list to create__.
> > > > Next I thought about making a function to do the work for me:
> > > > NB. function to return y's fname...
> > > > func =: verb define     acct =. y        name =: fname__acct
> >  name
> > > > )
> > > > The above function assumes y is an instance of Account.
> > > > Alas, func 1{list doesn't work.
> > > > However if I do:
> > > > acct =: 1{list
> > > > func acct
> > > > This will return the fname.
> > > > But I have to explicitly define acct, which is not particularly
> terse.
> > Is
> > > > there a way to call functions from the list of objects?
> > > >
> > > >
> ----------------------------------------------------------------------
> > > > For information about J forums see
> http://www.jsoftware.com/forums.htm
> > >
> > >
> > >
> > >
> > > --
> > > Devon McCormick, CFA
> > > ----------------------------------------------------------------------
> > > 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
>



-- 
Devon McCormick, CFA
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to