我在Rebol尝试一些非常基本的东西。我想要一个简单的实例层次结构 - 一个question
基本实例和一些question
子实例。我希望保护一些实例属性。
我现在正在做的是:
_question: make object! [
id: none
type: none
text: none ]
question-text: make _question [
type: 'text
new: func [
id' [integer!]
text' [string!]
] [
make self [
id: id'
text: text'
protect [ id type text ]
]
]
]
但后来失败了:
qt1: question-text/new 1 "q-text1"
qt2: question-text/new 2 "q-text2"
一旦我做了第二个实例qt2,我得到:
脚本错误:Word ID受保护,无法修改
接下来的想法是将受保护的字段移出_question
并将它们放入question_text
- 即使我不喜欢它。但这只会导致同样的错误。
注意:我目前正在使用Rebol2进行此操作,但理想情况下也可以在Rebol3和Red中运行。而且我想避免黑客攻击(当然 - 这很模糊,像Python getitem()/setitem()
这样的技巧会很好)。然后我宁愿让这些字段不受保护。
答案 0 :(得分:0)
这里有一些约束性考虑因素。这有效,但受Rebol 2的'protect
函数和上下文的古怪性质的影响:
new: func [
id' [integer!]
text' [string!]
/local object
][
object: make self []
object/id: id'
object/text: text'
protect bind [ id type text ] 'object
object
]