I forgot to unbox the top element; also this version is much cleaner and
doesn't require a temporary variable.
pop =: 3 : '(items =: }. items) ] > {. items'
Marshall
On Sat, May 31, 2014 at 12:55:29PM -0400, Marshall Lochbaum wrote:
> The method pop as listed doesn't return the popped item; it returns the
> size of the stack after the first element is popped. To have it return
> the popped item you can instead write
> pop =: 3 : 'top [ (items =: }.items) [ top =. {.items'
> .
>
> Marshall
>
> On Sat, May 31, 2014 at 05:32:02PM +0100, Jon Hough wrote:
> > I'm trying to get my head round OOP in J.
> > Mainly with http://www.jsoftware.com/help/learning/25.htm
> >
> > My current problem is if I create an instance of a class and, and I want to
> > use it as a member variable of another object, how can I do this and then
> > call it and its functions?
> > e.g.
> > Using the Stack example:
> > coclass 'Stack' create =: 3 : 'items =: 0 $ 0' push =: 3 : '# items =:
> > (< y) , items' top =: 3 : '> {. items' pop =: 3 : '# items =: }.
> > items' destroy =: codestroy S =: conew 'Stack' create__S 0
> > push__S 2
> > 1 NB. create new stack T
> > T =: conew 'Stack' create__T 0
> > push__S T
> > 2
> > Now T is on S's stack. And I can retrieve it by popping, but doing this
> > does not seem to returna reference to the actual object T, and I cannot
> > call any of T's methods. Is there a way to cast the returned item to a
> > stack? Then possibly I can call it's methods.
> > A Java example (not using generics):
> >
> > public class MyStack{..// definitions etc}
> > MyStack S = new MyStack();
> > MyStack T = new MyStack();
> > S.push(T);
> > MyStack U = (MyStack)S.pop();//cast returned object to a MyStack
> > U.push(5);//do something with returned object.
> > Regards.
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm