我正在 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 中运行。而且我想避免黑客攻击(当然 - 这很模糊,像 Pythongetitem()/setitem()
技巧之类的东西就可以了)。然后我宁愿让这些领域不受保护。