次のコードが Itcl に実装されているとします。
package require Itcl
itcl::class A {
constructor {} { puts $this }
destructor {}
public method Print {} { puts "ok" }
}
itcl::class B {
constructor {} { }
destructor {}
public method returnA {} { return [A #auto] }
}
B b ;# create an instance of class B
set obj [b returnA] ; #assign return value to obj
$obj Print ;# should treat obj as an A type and print ok
今、次のエラーが発生します:
"$obj Print" の実行中にコマンド名 "0" が無効です
クラス A に関連付けられた Print メソッドを呼び出すには、変数または Print コマンドにスコープを追加する必要があることは理解しましたが、その方法はよくわかりません。
次の投稿も読みました。
しかし、戻り値を特定のクラス型変数として扱う方法はそこには書かれていません