在不中断过程调用的情况下分割 tcl 字符串

问题描述 投票:0回答:1

我试图调用一个过程,它接受一个输入变量,即本例中的 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
等。

我应该如何正确存储最小、最大、因子,以便我可以在我的过程中处理它们。

split tcl
1个回答
0
投票

您需要使用双引号而不是花括号,以便对命令

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
© www.soinside.com 2019 - 2024. All rights reserved.