Hi Pete
Not sure exactly what you want, but here is a start. Because you want the
arg of the factory function to become the name of an object, it is probably
best to require it to be a word. The interpreter will then throw an error
if the arg is not a valid REBOL word before the function is called. This is
also consistent with your stated call syntax
>> logo-factory Logo1 ; the arg Logo1 is a word in this call, not a
string
We don't want the arg to be evaluated, so we need to quote it in the arg
list (there are other ways of accomplishing the goal, but this is a good
one). The following function generates the named object and also shows how
to use the given arg in definitions local to the returned object.
>> logo-factory: func ['arg [word!]] [set arg make object! [name: arg]]
>> logo-factory logo1 ;note REBOL is case insensitive
>> probe logo1
make object! [
name: 'logo1
]
>> logo1/name
== logo1
>> type? logo1/name
== word!
HTH
-Larry
----- Original Message -----
From: <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Thursday, August 17, 2000 8:36 AM
Subject: [REBOL] returning an object from a function, sort of
> hiall
>
> btw, I sent a message almost identical to this one from my home account
last
> night, and it isn't here. Is it because the list doesn't rec that other
account?
>
> anyway...
>
> I've got a function called logo-factory that accepts a string argument,
and
> should return an object referenced by a word = the passed string. ie., if
I type
>
> *logo-factory Logo1*
>
> I should get the same result as if I typed
>
> *Logo1: make object! [....]*
>
> I'm befuddled as to how to do this exactly -- I'm sure the answer is right
under
> my nose ;-)
>
> Here's sort of what I have so far:
>
> *
> logo-factory: func [
> "Creates and returns a named logo object."
> name [string!] "The name of the object to be created."
> ][
> ????? 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"]
> ]
> ]
> ]
> *
>
> Obviously, there's a lot missing here, like handling an argument string
which
> can't be used as a valid word, etc. Other functions like get-pict and
> write-html, etc., also need to be added.
>
> Any and all suggestions are welcome!
>
>
> --
> Pete Wason|"LWATPLOTG"|[EMAIL PROTECTED]|[EMAIL PROTECTED]|CUCUG|TA|PHX