我有一个过程,它需要两个字典作为必需参数
set myDict1 {a {1 2 3} b {4 5 6}}
set myDict2 {c {5 6} d {6 7}}
proc myProc {args} {
set output [miscProc $myDict1 $myDict2]
return $output
}
当我尝试像下面这样定义参数时,它会抛出错误
命令“myProc”的参数定义“dict {-inp1} {define first dict} {} 1 1”不包含有效的参数类型。有效的参数类型为“int float bool string enum ternary point alias box point_list db_object redirect_operator string enum_list object tcl_obj box_list Polygon”
define_proc_arguments myProc \
-info "perform something" \
-define_args {
{-inp1 "define first dict" "" dict {required}}
{-inp2 "define second dict" "" dict {required}}
}
我在这里缺少什么,我应该将它们定义为列表/数组吗?
问题在于,无论谁写了
define_proc_arguments
,都没有包含验证字典(或一般列表)的选项。我找不到任何东西可以让我猜测它的来源(Tcl 源代码树、Github 或 Tcler 的 Wiki 上根本没有任何内容),所以猜测如何修复它很困难。
如果您想将值验证为字典,请首先将其作为字符串接受(这不会在
define_proc_arguments
中应用任何验证),然后使用 string is dict
自行检查。