I tried this in the script/run included here. It doesn't seem
to work when the functions are methods in an object -
or else the syntax is a little more complex. I've tried
a couple of variations of the syntax, but still get
error msgs rather than an answere one way or the
other.
Lasislav wrote:
> Actually, the functions are not replicated. Cf:
>
> a: func [] [print "done"]
> b: :a
> same? :a :b
>
> The functions are the same as in the former example. HTH
>
> Ladislav
> [EMAIL PROTECTED] wrote:
>
> I am considering writing an app that would create several hundred or
> a few thousand copies of a single object. One way to keep track of them
> is to use an array. A script that tests this syntax is below along with
> a run which does a "print mold" on the array. It appears that the
> functions(methods) in the object are replicated for each instance
> of the object in the array. Is this true? Is this efficient? I am more
> used to OO languages like C++ where only the data fields would
> be replicated and there would be only one copy of the functions
> for all the instances of the class. Is there a better way to do this?
>
===== start of script
REBOL [ Title: "test05 "
Author: " ww "
]
count-x: 1
myobj: [
x: (count-x)
y: 5
myfun: func [ x ] [ return x ]
myfun2: func [ ] [ return y ]
]
xarr: array 5
for i 1 5 1 [ do rejoin compose ["xarr/" (i) ": (make object! myobj ) " ]
count-x: count-x + 1
]
print "demo: show myfun exists/works"
print join "xarr/1/myfun : " xarr/1/myfun 7
print join "xarr/2/myfun : " xarr/2/myfun 7.43
print " are they the same? "
print same? :xarr/1/myfun :xarr/2/myfun
===== end of script
===== start of run
Script started on Sat Nov 27 14:10:20 1999
l
>> do load %t05.r
demo: show myfun exists/works
xarr/1/myfun : 7
xarr/2/myfun : 7.43
are they the same?
** Script Error: xarr is missing its x argument.
** Where: print same? :xarr/1/myfun :xarr/2/myfun
>> q
Script done on Sat Nov 27 14:10:41 1999
===== end of run