TCL 滤波器阵列结果
TCL filter array results
$myList 通过 array get 保存数组的内容。
lappend myList array get myArray * * *
puts "$myList"
{636174,736f756e64,30 6d656f77 666f78,736f756e64,30 796969
646f67,736f756e64,30 776f6f66 666f78,736f756e64,31 796970
646f67,736f756e64,31 6261726b 646f67,736f756e64,32 77756666}
我要寻找的最终结果是收集所有没有用逗号连接的条目。
6d656f77 796969 776f6f66 646f67 6261726b 77756666
如果我要使用 lmap 手动硬编码值,则此输出正确。
% puts [lmap x {636174,736f756e64,30 6d656f77 666f78,736f756e64,30 796969 646f67,736f756e64,30 776f6f66 666f78,736f756e64,31 796970 646f67,736f756e64,31 6261726b 646f67,736f756e64,32 77756666} {if {[string first , $x] != -1} continue {set x}}]
6d656f77 796969 776f6f66 796970 6261726b 77756666
如果我使用变量 $myList,则输出 null。
puts [lmap x $myList {if {[string first , $x] != -1} continue {set x}}]
lsearch 也返回空值。
[lsearch -all -inline -not $myList *,*]
我做错了什么?
您似乎没有 lappend
正确地 lappend
将整个列表 lappend
放入另一个列表。
array set myArray {
636174,736f756e64,30 6d656f77 666f78,736f756e64,30 796969
646f67,736f756e64,30 776f6f66 666f78,736f756e64,31 796970
646f67,736f756e64,31 6261726b 646f67,736f756e64,32 77756666
}
lappend myList [array get myArray]
此处,$myList
仅包含一个元素,该元素本身又包含不同的值。您应该扩展 array get
:
返回的列表
lappend myList {*}[array get myArray]
也就是说,在我看来,数组中的所有键似乎都包含逗号,而您需要这些值,所以在这种情况下,您不妨跳过 lappend
:
set myList [lmap {key val} [array get myArray] {set val}]
# 776f6f66 796969 6d656f77 6261726b 796970 77756666
$myList 通过 array get 保存数组的内容。
lappend myList array get myArray * * *
puts "$myList"
{636174,736f756e64,30 6d656f77 666f78,736f756e64,30 796969
646f67,736f756e64,30 776f6f66 666f78,736f756e64,31 796970
646f67,736f756e64,31 6261726b 646f67,736f756e64,32 77756666}
我要寻找的最终结果是收集所有没有用逗号连接的条目。
6d656f77 796969 776f6f66 646f67 6261726b 77756666
如果我要使用 lmap 手动硬编码值,则此输出正确。
% puts [lmap x {636174,736f756e64,30 6d656f77 666f78,736f756e64,30 796969 646f67,736f756e64,30 776f6f66 666f78,736f756e64,31 796970 646f67,736f756e64,31 6261726b 646f67,736f756e64,32 77756666} {if {[string first , $x] != -1} continue {set x}}]
6d656f77 796969 776f6f66 796970 6261726b 77756666
如果我使用变量 $myList,则输出 null。
puts [lmap x $myList {if {[string first , $x] != -1} continue {set x}}]
lsearch 也返回空值。
[lsearch -all -inline -not $myList *,*]
我做错了什么?
您似乎没有 lappend
正确地 lappend
将整个列表 lappend
放入另一个列表。
array set myArray {
636174,736f756e64,30 6d656f77 666f78,736f756e64,30 796969
646f67,736f756e64,30 776f6f66 666f78,736f756e64,31 796970
646f67,736f756e64,31 6261726b 646f67,736f756e64,32 77756666
}
lappend myList [array get myArray]
此处,$myList
仅包含一个元素,该元素本身又包含不同的值。您应该扩展 array get
:
lappend myList {*}[array get myArray]
也就是说,在我看来,数组中的所有键似乎都包含逗号,而您需要这些值,所以在这种情况下,您不妨跳过 lappend
:
set myList [lmap {key val} [array get myArray] {set val}]
# 776f6f66 796969 6d656f77 6261726b 796970 77756666