[REBOL] returning an object from a function, sort of Re:(2)
From: zoon:stumpworld at: 17-Aug-2000 16:53
[rebol--techscribe--com] wrote:
> Hi Pete,
>
> To be able to pass a word to your function and have the word set to the
> object created in the function requires two changes to your code:
I could also do it like:
logo-factory: func [
[ "Creates and returns a named logo object."
[ 'name [word!] "The name of the object to be created."
[ ][
[ set name make object! [
[ type: "text"
[ text: ""
[ pict: #{}
[ file: ""
[ altt: ""
[ switch-type: func [
[ "Toggles the logo object's type between 'text' and
'pict'."
[ ][
[ type: either type = "text" ["pict"]["text"]
[ ]
[ ]
[ ]
example use:
>> logo-factory Logo1
>> logo-factory Logo2
>> probe Logo1
make object! [
type: "text"
text: ""
pict: #{}
file: ""
altt: ""
switch-type: func [
{Toggles the logo object's type between 'text' and 'pict'.}
][
type: either type = "text" ["pict"] ["text"]
]
]
>> Logo1/text: "Emporium of Liquid Fun"
== "Emporium of Liquid Fun"
>> Logo1/switch-type
== "pict"
>> probe Logo1
make object! [
type: "pict"
text: "Emporium of Liquid Fun"
pict: #{}
file: ""
altt: ""
switch-type: func [
{Toggles the logo object's type between 'text' and 'pict'.}
][
type: either type = "text" ["pict"] ["text"]
]
]
>> probe Logo2
make object! [
type: "text"
text: ""
pict: #{}
file: ""
altt: ""
switch-type: func [
{Toggles the logo object's type between 'text' and 'pict'.}
][
type: either type = "text" ["pict"] ["text"]
]
]
But, of course, after all that, I see now that it might be better if the object
were internally identified, rather than depending upon the word that happens to
reference it ;-)
make object! [
name: "Logo1"
type: "Primary Store Logo"
styl: "text"
text: "Emporium of Liquid Fun"
etc...
--
Pete Wason|"LWATPLOTG"|[zoon--stumpworld--c]|[mrzoon--hynoom--c]|CUCUG|TA|PHX