RosettaCodeData/Task/Optional-parameters/Tcl/optional-parameters-2.tcl

19 lines
587 B
Tcl

package require Tcl 8.5; # Only for the list expansion syntax
proc tablesort {table args} {
array set opt {ordering "" column 0 reverse 0}
array set opt $args
set pars [list -index $opt(column)]
if {$opt(reverse)} {lappend pars -decreasing}
if {$opt(ordering) ne ""} {lappend pars -command $opt(ordering)}
lsort {*}$pars $table
}
puts [tablesort $data]
puts [tablesort $data column 1]
puts [tablesort $data column 0]
puts [tablesort $data column 0 reverse 1]
puts [tablesort $data ordering {
apply {{a b} {expr {[string length $b]-[string length $a]}}}
}]