以下是一些TCL命令的结果。
get_props -type assert
{"a", "b", "c", "d"}
现在所有这4个对象都具有与之关联的特定属性。但我对"启用"感兴趣仅属性。
get_attribute [get_props a] enabled
true
get_attribute [get_props b] enabled
false
get_attribute [get_props c] enabled
true
get_attribute [get_props d] enabled
false
现在我想只转换"启用"这些4"断言"中的对象(enabled = true)将对象输入" cover"类型对象(所以只有" a"&" c"应该被转换)和转换"断言"进入"封面",命令是fvcover。
我尝试过以下命令:
fvcover [get_props -type assert]
现在的问题是,这个fvcover命令会转换所有4"断言"将对象输入" cover"键入对象,而不仅仅是" a" &安培; " C"
所以我想,我需要结合使用get_props和amp; get_attributes命令,但我不知道该怎么做。
那么如何解决这个问题呢?
注意: - " a"," b"," c"," d"只是为了解释。实际上,get_props命令可以返回任意数量的任何名称的结果。但是在那个列表中,我需要转换,只转换那些"启用"属性为真。
答案 0 :(得分:0)
列表不是Tcl格式。这里有一些测试代码可用于将格式转换为Tcl。
#### PROCS FOR TESTING ####
proc get_props {type {assert no}} {
if {$type == "-type" && $assert == "assert"} {
return {"a", "b", "c", "d"}
}
if {$type == "a" || $type == "c"} {
return [list enabled true]
} elseif {$type == "b" || $type == "d"} {
return [list enabled false]
}
return [list NOT FOUND]
}
proc get_attribute {a k} {
foreach {key value} $a {
if {$key == $k} {
return $value
}
}
return NOT_FOUND
}
# get props. props is in a list format that is not native tcl list
set props [get_props -type assert]
# convert props to tcl list
set props_list [string map {, ""} $props]
# make a list to catch enabled props
set enabled_props [list]
# add enabled props to new list
foreach {prop_name} $props_list {
if {[get_attribute [get_props $prop_name] enabled] == "true"} {
lappend enabled_props "\"$prop_name\""
}
}
# convert enabled_props to your format
set enabled_props "{[join $enabled_props ", "]}"
# run your program on $enabled_props
puts $enabled_props