我想从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 来看到这一点。
我怀疑它与以下陈述有关:
当脚本中没有返回时,它的值是脚本中最后一个命令的值。
如果有人能解释这种行为以及我应该如何返回,我将不胜感激。