私は 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"
2 番目のインスタンスを qt2 にすると、次のようになります。
スクリプト エラー: Word ID は保護されているため、変更できません
次のアイデアは、保護されたフィールドを移動してそこに_question
入れることquestion_text
です-たとえそれが気に入らなくても。しかし、それは同じエラーにつながります。
注: 私は現在これを Rebol2 で行っていますが、理想的には Rebol3 と Red でも実行できるようにしたいと考えています。そして、私はハッキングを避けたいと思っています (確かに - それはあいまいです。Python のgetitem()/setitem()
トリックのようなものは問題ありません)。次に、フィールドを保護しないことをお勧めします。