Давайте посмотрим на различия. С одним набором фигурных скобок Tcl обрабатывает аргумент как одно слово (в некотором роде аналогично одинарным кавычкам в других языках). Но если вы обращаетесь к нему как к списку, он разбивается на несколько частей:
foreach elem {ifAdminStatus.2 Integer 1} {
puts $elem
}
ifAdminStatus.2
Integer
1
И с двойными фигурными скобками:
foreach elem {{ifAdminStatus.2 Integer 1}} {
puts $elem
}
ifAdminStatus.2 Integer 1
Теперь список содержит единственный аргумент: "ifAdminStatus .2 Целое число 1 ".
Чтобы создать список, используйте команду list
:
# this is the same as {ifAdminStatus.2 Integer 1}
# it contains three strings
set arg [list ifAdminStatus.2 Integer 1]
# this is the same as {{ifAdminStatus.2 Integer 1}}
# it contains a single string
set arg [list {ifAdminStatus.2 Integer 1}]
Очевидно API хочет список с единственной строкой в качестве аргумента. Чтобы создать это с помощью переменных, дважды используйте команду list
.
set id ifAdminStatus.2
set data Integer
set val 1
set arg [list [list $id $data $val]]
foreach elem $arg {
puts $elem
}
ifAdminStatus.2 Integer 1
Вы хотите попробовать:
set result [3RD_par_api [list [list $id $data $val]]]
Или просто:
set result [3RD_par_api [list "$id $data $val"]]