Новая функция ниже не работает, если Obj является локальным. Если я удалю его из/local, он будет работать. Итак, что делать, чтобы заставить его работать с местным сообществом Obj? Конечно, не сложно для вас.Rebol and/local Object
Person: make object! [
Person: func[FirstName LastName][
Self/FirstName: FirstName
Self/LastName: LastName
Print Self/FirstName
Print Self/LastName
]
FirstName: ""
LastName: ""
]
new: func[Class [Object!] Param-Block [block!] /local Obj][
Constructor: to-word pick pick Class 1 2
Obj: Make Class []
params: copy ""
foreach param Param-Block [
if string? param [
param: rejoin [{"} param {"}]
]
append params param
append params " "
]
do rejoin [{do get in Obj Constructor} { } params]
Obj
]
;FOR TEST
John: new Person["John" "Doe"]
Даст
>> probe John
make object! [
Person: func [FirstName LastName][
Self/FirstName: FirstName
Self/LastName: LastName
Print Self/FirstName
Print Self/LastName
]
FirstName: ""
LastName: ""
]
>>
То есть FirstName и LastName являются "" вместо "Джон", "Доу"
Он работал ожидал, когда я попробовал. С какой проблемой вы столкнулись? –
Вы установили значение John, возвращаемое новым, которое в тестовом примере является параметром, который является строкой значения {«John» «Doe»}. –
Скопированная плохая версия, так исправленная, чтобы вернуть Obj в новую. Моя проблема: –