Re: fyi, small note on using Mathematica for object based programming
- To: mathgroup at smc.vnet.net
- Subject: [mg126878] Re: fyi, small note on using Mathematica for object based programming
- From: Kurt TeKolste <tekolste at fastmail.net>
- Date: Fri, 15 Jun 2012 03:40:42 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Another technique for defining object attributes and methods that seems
to work at first glance is to use upvalues.
I have only played with this at an elementary level and do not know if
there are any pitfalls with more complex usages.
Has anyone tried this?
Kurt
Example
In[91]:=
newAnimal[n_, s_] :=
Module[{uniqueID = Unique["animal"]},
ID[a_Animal] ^= uniqueID;
name[a_Animal] ^= n;
sound[a_Animal] ^= s;
makeSound[a_Animal] ^:= For[i = 0, i < 5, i++, Print[sound[a]]];
uniqueID]
In[92]:= myanimal = Animal[id = newAnimal[lion, roar]]
Out[92]= Animal[animal7]
In[93]:= name[myanimal]
Out[93]= lion
In[94]:= makeSound[myanimal]
roar
roar
roar
roar
roar