gpt4 book ai didi

tcl - 如何使用选项创建 Tcl 过程?

转载 作者:行者123 更新时间:2023-12-01 22:26:11 26 4
gpt4 key购买 nike

我想创建带有一些选项的 tcl 程序。我知道带有参数和可选参数的过程,但不知道选项。例如,如果我通过以下三种方式调用我的过程 arith(-add 表示加法,-sub 表示减法):

1) arith 10 5 
2) arith -add 10 5 or arith 10 5 -add
3) arith -sub 10 5 or arith 10 5 -sub

分别输出应该是1)15(默认应该加),2)15,3)5

如何在Tcl中编写这个程序?我是 tcl 的新手,请给我一些关于 Tcl 的在线资料或书籍。

最佳答案

复杂的参数解析可以用 cmdline package 来完成,它是 Tcllib 的一部分。关键命令是 ::cmdline::getoptions,它从变量中提取选项并返回描述它们的字典。它还会修改变量,使其仅包含剩余的参数。

package require cmdline
proc arith args {
set options {
{op.arg "add" "operation to apply (defaults to 'add')"}
}
array set parsed [::cmdline::getoptions args $options]
if {[llength $args] != 2} {
return -code error "wrong # args: must be \"arith ?-op operation? x y\""
}
switch $parsed(op) {
add {return [::tcl::mathop::+ {*}$args]}
sub {return [::tcl::mathop::- {*}$args]}
default {
return -code error "Unknown -op \"$parsed(op)\": must be add or sub"
}
}
}

演示用法(包括一些错误案例):

% arith 
wrong # args: must be "arith ?-op operation? x y"
% arith 2 3
5
% arith -op sub 2 3
-1
% arith -op mult 2 3
Unknown -op "mult": must be add or sub

要注意的主要事情是选项描述符采用选项名称​​没有前导- .arg 如果您还想传递一个参数。

关于tcl - 如何使用选项创建 Tcl 过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34036294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com