It depends on applications. For some real world problems, object array is needed, eg a workbook object contains multiple worksheets, each worksheet is an object. However for such complex applications, object array itself is a non-issue. please see the source code of the tara addon.
04.06.2014, в 23:57, Jon Hough <[email protected]> написал(а): > 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
