【发布时间】:2009-12-16 20:49:03
【问题描述】:
如果 Obj 是本地的,则下面的新功能将不起作用。如果我从 /local 中删除它,它可以工作。那么如何使它与本地 Obj 一起工作,谢谢?对你来说当然不难。
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" "Doe"
【问题讨论】:
-
当我尝试它时,它按预期工作。你遇到了什么问题?
-
你已经为 John 设置了 new 返回的值,在测试用例中是 params,它是值 {"John" "Doe" } 的字符串。
-
复制了错误版本,因此更正以返回新的 Obj。我的问题是:
-
FirstName 和 LastName 是 "" 而不是 "John" "Doe" 请参阅问题更新。如果 Obj 不是本地的,它可以工作。
标签: rebol