为什么我们不能将 dict 定义为 tcl 中的 Argument 定义?

问题描述 投票:0回答:1

我有一个过程,它需要两个字典作为必需参数

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}}
    }

我在这里缺少什么,我应该将它们定义为列表/数组吗?

tcl
1个回答
0
投票

问题在于,无论谁写了

define_proc_arguments
,都没有包含验证字典(或一般列表)的选项。我找不到任何东西可以让我猜测它的来源(Tcl 源代码树、Github 或 Tcler 的 Wiki 上根本没有任何内容),所以猜测如何修复它很困难。

如果您想将值验证为字典,请首先将其作为字符串接受(这不会在

define_proc_arguments
中应用任何验证),然后使用
string is dict
自行检查。

© www.soinside.com 2019 - 2024. All rights reserved.