Itcl でパブリック変数の構成スクリプトを使用する適切な方法は何ですか?
つまり、これが私がやりたいことです:
class MyClass {
private variable myVar
public method setMyVar {arg} {
if {![string is integer -strict $arg]} {
return -code error "argument $arg is not an integer"
}
set myVar $arg
}
}
少なくとも、これはセッター メソッドを C++ で書く方法です。まず、引数を確認し、有効であればプライベート変数に代入します。引数が有効でない場合は、オブジェクトの状態を変更しないでください。
ここで、私が持っている内部ステータス変数ごとにゲッター メソッドとセッター メソッドを記述する代わりに、Itcl のconfigure
メカニズムを使用してコードを書き直すことにしました。(私は物事を標準的な方法で行うのが好きです。)
class MyClass {
public variable myVar 10 {
if {![string is integer -strict $myVar]} {
return -code error "new value of -myVar is not an integer: $myVar"
}
}
}
myObj configure -myVar "some string"
このアプローチの問題は、引数が有効でない場合でも変数が割り当てられることです! そして、それを以前の値に戻す (簡単な) 方法はありません。
Itcl構成スクリプトを使用する正しい方法は何ですか? 値が変更されたときに GUI を更新する手段として Tk ウィジェット用に設計されたことは理解していますが、Tk ウィジェットは引数も検証する必要がありますね。