LINUX.ORG.RU

catch and dict

 


0

1

А как красиво result и err положить в dict

 [catch {exec aide $opts} result err] 
, что бы к ним в последствии обращаться как

dict get msg result и т.д.?

Никакого «волшебно-красивого» варианта нет, вот прямо так dict set msg result $result и так далее. Можно написать свою процедуру, которая будет сразу возвращать dict (см. uplevel, чтобы вызвать кусок кода во фрейме вызвавшей процедуры).

Кстати, будет dict get $msg result, вы доллар пропустили. И ещё кстати, если $opts содержит список аргументов для aide, нужно его «раскрыть», чтобы он не воспринимался как один аргумент: exec aide {*}$opts (Tcl 8.5+).

LeninGad
()
% set msg [dict create result $result err $err]
% set красиво
can't read "красиво": no such variable
fopen ★★
()
Ответ на: комментарий от LeninGad

чтобы он не воспринимался как один аргумент: exec aide {*}$opts (Tcl 8.5+).

Не пойму, в чем хитрость? Если сделать

set opts {-a -b}
то aide все же распарсит это правильно.

macumazan ★★
() автор топика
Последнее исправление: macumazan (всего исправлений: 1)
Ответ на: комментарий от macumazan

Это у вас aide умный, если оно и вправду работает (или глупый; я бы на вашем месте проверил, что -b не игнорируется при этом).

А вот ls сломается: set opts {-l -h}; exec ls $opts

LeninGad
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.