以下是來自 tcl wiki鏈接的模板,此代碼可用于處理 tcl 命令列引數。我想知道為什么我們需要[set argv {}]在第 7 行。
# If this script was executed, and not just "source"'d, handle argv
if {[info exists argv0] && [
file dirname [file normalize [info script]/...]] eq [
file dirname [file normalize $argv0/...]]} {
while {[llength $argv]} {
puts [list ooo $argv]
set argv [lassign $argv[set argv {}] flag] ; # Notice Here
switch -glob $flag {
-bool {
set bool 1
}
-option {
set argv [lassign $argv[set argv {}] value]
}
-- break
-* {
return -code error [list {unknown option} $flag]
}
default {
set argv [list $flag {*}$argv]
break
}
}
}
}
foreach file $argv {
puts [format "file: %s" $file]
}
uj5u.com熱心網友回復:
看起來作者實作了K的Tcl wiki 頁面上的“取消共享物件”部分中描述的性能優化。基本上它使物件不共享,因此修改不需要創建副本。在回圈中操作大串列時,這會產生很大的不同。在這種情況下,我不希望它提供很大的收益,因為 argv 通常不會很大,而且可能只處理一次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/378765.html
標籤:猛击 壳 tcl 维瓦多 Synopsys-vcs
上一篇:移動文本塊
