Inner classes: Difference between revisions

Content added Content deleted
m (julia example)
(J)
Line 165: Line 165:
</pre>
</pre>



=={{header|J}}==

J allows inner classes, but because such classes are always public,
there is little or no utility to be had nesting classes in J.

Class definition for task:

<syntaxhighlight lang=J>coclass 'baggagecheck'

create=: {{
data=: keys=: i.0
mysn=: '' conew 'serialnumber'
}}

create_serialnumber_=: {{number=: 0}}
destroy_serialnunber_=: codestroy
get_serialnumber_=: {{number=: 1+number}}

destroy=: {{
destroy__mysn ''
codestroy ''
}}

checkin=: {{
sn=.get__mysn''
data=: data,<y
keys=: keys,sn
sn
}}

checkout=: {{
r=.>(keys i. y){data
b=. keys~:y
data=: b#data
keys=: b#keys
r
}}</syntaxhighlight>

Example use:

<syntaxhighlight lang=J> checker=: '' conew 'baggagecheck'
checkin__checker 'suitcase'
1
checkin__checker 'box'
2
checkin__checker 'bicycle'
3
checkout__checker 2
box
</syntaxhighlight>


=={{header|Julia}}==
=={{header|Julia}}==