我试图调用一个过程,它接受一个输入变量,即本例中的 A,并将其值与给定的范围进行比较,并返回提供的因子。 我能够完成这项工作 -
get_ranged_factor [get_val A] {0 64 1.02} {64 128 1.05} {128 200 1.1}]
因此,如果 A 的值为 100,那么我们看到它在 64 到 128 之间,并且返回 1.05。
现在我希望范围和因子是动态的。
get_factor [get_val A] {0 64 1.02} {64 [get_val B] [get_val C]} {128 200 1.1}]
当我解析第二个条件时,我无法将其分成三个部分,即最小值应该是
64
,最大值应该是[get_val B]
,因子应该是[get_val C]
。
我使用了 split 和 lindex,但它们都使用空格进行分割,因此它们在这种情况下不起作用,我得到的最小值为 64,最大值为
[get_val
等。
我应该如何正确存储最小、最大、因子,以便我可以在我的过程中处理它们。
您需要使用双引号而不是花括号,以便对命令
get_val
进行求值。
get_factor [get_val A] {0 64 1.02} "64 [get_val B] [get_val C]" {128 200 1.1}]
对于硬编码列表,这并不重要。
"0 64 1.02"
或 {0 64 1.02}
您还可以使用
list
命令定义您的列表。
set a 5
"$a b c" --> 5 b c
{$a b c} --> $a b c
[list $a b c] --> 5 b c