configbodyから戻りたいのですが、変数が設定されないようにせずに明示的に戻すことはできません。
私が見ている行動を理解するのを手伝ってください。次のコードを検討してください ( Itcl 3.4を使用):
package require Itcl
catch {itcl::delete class Model}
itcl::class Model {
public variable filename "orig"
}
itcl::configbody Model::filename {
if 1 {
return ""
} else {
}
}
Model my_model
my_model configure -filename "newbie"
puts "I expect the result to be 'newbie:' [my_model cget -filename]"
空の文字列を返すと、ファイル名が新しい値に設定されません。戻らずに proc が失敗するのを許可すると、ファイル名が変更されます。これは、上記のコードで 1 を 0 に変更することで確認できます。
次のステートメントに関連していると思われます。
スクリプトに return がない場合、その値はスクリプトで評価された最後のコマンドの値です。
誰かがこの振る舞いと、私がどのように戻るべきかを説明してくれたら、助けていただければ幸いです.