Как передать словарь с большим количеством аргументов в процесс в tcl? - PullRequest
3 голосов
/ 09 марта 2012
proc test {a b c } {
       puts $a
       puts $b
       puts $c
}
set test_dict [dict create a 2 b 3 c 4 d 5]

Теперь я хочу передать dict в тест, как это:

test $test_dict

Как сделать, test выбирает только три элемента в dict с одинаковыми именами его параметров (клавиш). Ожидаемый результат должен быть:

2
3
4

Поскольку он выбирает a b c в словаре, но не d. Как я могу это сделать? Я видел, что какой-то код делает это, но я не могу заставить его работать.

1 Ответ

5 голосов
/ 09 марта 2012

Я думаю, вы должны использовать dict get:

proc test {test_dic} {
  puts [dict get $test_dic a]
  puts [dict get $test_dic b]
  puts [dict get $test_dic c]
}

set test_dict [dict create a 2 b 3 c 4 d 5]
test $test_dict

Edit: Другой вариант будет использовать dict with:

proc test {test_dic} {
  dict with test_dic {
    puts $a
    puts $b
    puts $c
  }
}

set test_dict [dict create a 2 b 3 c 4 d 5]
test $test_dict

Но test получает список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...