Als Ihr Beispielcode zu binden, ist REBOL 2 können Sie GET verwenden Sie den Wert des Wortes zu erhalten:
>> get to-word (rejoin [foo "_result_data"])
== [none none none none none]
REBOL 3 behandelt Kontexte anders als REBOL 2. Wenn Sie also ein neues Wort erstellen, müssen Sie dessen Kontext explizit behandeln, andernfalls hat es keinen Kontext und Sie erhalten einen Fehler, wenn Sie versuchen, es zu setzen. Dies steht im Gegensatz zu REBOL 2, bei dem standardmäßig der Kontext des Worts festgelegt wird.
So könnte man REBOL 3-Code wie den folgenden verwenden betrachten SET/GET Ihre dynamische Variablen:
; An object, providing the context for the new variables.
obj: object []
; Name the new variable.
foo: "test1"
var: to-word (rejoin [foo "_result_data"])
; Add a new word to the object, with the same name as the variable.
append obj :var
; Get the word from the object (it is bound to it's context)
bound-var: in obj :var
; You can now set it
set :bound-var now
; And get it.
print ["Value of " :var " is " mold get :bound-var]
; And get a list of your dynamic variables.
print ["My variables:" mold words-of obj]
; Show the object.
?? obj
das Lauf als Skript liefert:
Value of test1_result_data is 23-Aug-2013/16:34:43+10:00
My variables: [test1_result_data]
obj: make object! [
test1_result_data: 23-Aug-2013/16:34:43+10:00
]
Eine Alternative IN oben mit bereiter sein können BIND verwenden:
bound-var: bind :var obj
Bah. So offensichtlich jetzt, wo ich es sehe. Vielen Dank. :) –