使用命名参数调用TCL proc

Ray*_*emi 2 tcl

鉴于这个过程:

proc foo {{aa "a"} {bb "b"} cc} {
  echo $cc
}
Run Code Online (Sandbox Code Playgroud)

是否可以调用proc foo并仅传递值cc?此外,是否可以cc通过名称明确传递值?

我看到的一切都表明所有的论点都必须通过立场来传递.

gle*_*man 7

我会像Tk那样做:

proc foo {cc args} {
    # following will error if $args is an odd-length list
    array set optional [list -aa "default a" -bb "default b" {*}$args]
    set aa $optional(-aa)
    set bb $optional(-bb)

    puts "aa: $aa"
    puts "bb: $bb"
    puts "cc: $cc"
}
Run Code Online (Sandbox Code Playgroud)

然后

% foo
wrong # args: should be "foo cc ..."
% foo bar
aa: default a
bb: default b
cc: bar
% foo bar -bb hello -aa world
aa: world
bb: hello
cc: bar
Run Code Online (Sandbox Code Playgroud)