當在tcl中定義一個過程,如下所示,我如何調用定義a和c的proc?有沒有辦法做到這一點?在tcl過程中設置2個默認變量
proc test1 { a {b 2} {c 3} } {
puts "$a $b $c"
}
當在tcl中定義一個過程,如下所示,我如何調用定義a和c的proc?有沒有辦法做到這一點?在tcl過程中設置2個默認變量
proc test1 { a {b 2} {c 3} } {
puts "$a $b $c"
}
這裏有一個技巧,那你希望什麼,但不是太亂有點混亂:
proc test1 { args } {
# set the default values
array set values {b 2 c 3}
# todo: validate that $args is a list with an even number of items
# now merge in the args
array set values $args
# and do stuff with the values ...
parray values
}
test1 a 10 c 14
你有時會看到應用程序使用該技術,其中數組鍵前導破折號,以像選擇:
proc test1 args {
array set values {-b 2 -c 3}
array set values $args
parray values
}
test1 -a 10 -c 14
如果需要說明,'a'仍然可以通過使用'{a args}'作爲必需的參數。如果仍然希望「a」出現在「values」中,可以使用(例如)'array set values [list a $ a b 2 c 3]'。 –
感謝Glenn和彼得,我加入了你的帖子,我得到了
proc test1 { a args } {
array set valores [list a $a -b 2 -c 3]
array set valores $args
puts "$valores(a) $valores(-b) $valores(-c)"
}
哪個解決了我想要的。
所以,現在我可以打電話
> proc 12 -c 8
> 12 2 8
都能跟得上。你不能跳過這個論點。 – Dinesh
是否有任何方法提供2個或更多的默認值,無論它是什麼? – Ericson