Вы можете определить метод:
proc fillArray {a b} {
eval return \[list $a [string repeat "\[incr a\] " [incr b -$a]]\]
}
И использовать его как:
set myArray [fillArray 1 10]
Вы даже можете украсить вызов процедуры, чтобы он выглядел как в perl,Для этого просто переопределите unknown
процедуру:
rename unknown __unknown
proc unknown {args} {
if {[llength $args] == 3} {
lassign $args a op b
if {[string is integer $a] && $op == ".." && [string is integer $b]} {
return [fillArray $a $b]
}
}
return [uplevel __unknown {*}$args]
}
После этого вы можете написать просто:
set myArray [1 .. 10]
:)