itcl を使用して多数のオブジェクトを作成し、それらをデータ構造に格納して、後でそれらのメソッドを呼び出すことができるようにしようとしています。しかし、それはエラーを出しています:
以下は私が書いたコードです:
itcl::class router {
variable name;
variable mac;
variable interface_list;
variable topology;
constructor {rname rmac rtopology} {
puts "creating new router $rname / $rmac within [$rtopology get_name]"
set name $rname;
set mac $rmac;
set topology $rtopology;
}
destructor {
delete $this;
}
method add_interface {name network_id} {
set int [interface #auto $name $network_id $this];
lappend interface_list $int;
}
method get_interfaces {} {
return $interface_list;
}
method get_name{} {
return $name;
}
method get_mac{} {
return $mac;
}
method get_topology {} {
return $topology;
}
}
itcl::class topology {
variable name;
variable router_list;
constructor {tname} {
set name $tname;
set router_list [dict create];
}
method add_router {name mac} {
set newrouter [router #auto $name $mac $this];
dict set router_list $name $newrouter;
}
method add_routerinterface {rname iname networkid} {
foreach r [dict keys $router_list] {
if {[$r get_name] == rname} {
$r add_interface $iname $networkid;
break;
}
}
}
method get_name {} {
return $name;
}
method get_routers {} {
return $router_list;
}
method show {} {
foreach rkey $router_list {
set router [dict get $router_list $rkey];
set rname [$router get_name];
}
}
}
topology t "JitixNet";
t add_router R1 fwe2165;
t add_router R2 dagsyu2;
t add_router R3 fasdjg3;
t show;
エラーは次のとおりです。
D:\Tcl\code>tclsh network-topology.tcl JitixNet 内に新しいルーター R1 / fwe2165 を作成する JitixNet 内に新しいルーター R2 / dagsyu2 を作成する JitixNet 内に新しいルーター R3 / fasdjg3 を作成する 不正なオプション "get_name": 次のいずれかにする必要があります... router0 add_interface 名 network_id router0 cget -オプション router0 configure ?-option? ?value -オプション値...? router0 get_interfaces router0 get_mac{} return $mac; router0 get_name{} return $name; router0 get_topology router0 is className 実行中 「$router get_name」 (オブジェクト "::t" メソッド "::topology::show" 本文 4 行目) 内部から呼び出された 「Tショー」 (ファイル「network-topology.tcl」の 142 行目)
誰か助けてくれませんか?私は頭がおかしくなりました...率直に言って、ITclがJavaに似たものになることを期待していました...