Otcl中类以instvar声明一个变量,定义类Test,Test instvar声明的是一种类似于全局静态变量,而$self instvar 则表明是类成员变量。具体的示例如下:
simple_test.tcl
Class Test
# similar satic variable in c++
Test set static_list_ {1 2 3 4 5 6}
# "there must be a space before {,or error occurs"
Test instproc print {} {
$self instvar list_
foreach var $list_ {
puts "$var"
}
Test instvar static_list_
foreach var [set static_list_] {
puts "$var"
}
set var 11
#wrong ,not the static_list,just the string
puts "list length [llength static_list_]"
puts "list length [llength $static_list_]"
lappend static_list_ $var
}
Test proc get_list {} {
Test instvar static_list_
return $static_list_
}
Test instproc add_list { a } {
$self instvar list_
lappend list_ $a
}
Test instproc init args {
$self instvar list_
set list_ {1 2 3 4}
}
proc get_list_pose {l memeber} {
}
proc fuck {} {
Test test
set var 10
test add_list $var
test print
}
set list1 {1 2 3 4 5}
puts "The contents of list1 are: $list1"
fuck
set list_ [Test get_list]
puts "get list"
foreach var $list_ {
puts "$var"
}
里面涉及了一些列表的操作,以及类函数的调用,以及全局变量的获取函数get_list