Tcl/Tkでプログラムを書く(1)から続く。
#制御構造
標準的な制御構造は一通り使える。(1)で書いたとおり、すべての制御構造はコマンドである。
if
コマンドは見た目普通である。「条件」はexpr
が評価する。
if 条件 成立部 else 非成立部
前述のfor
と同じく、if
も1行で書かなければならないので、
if {$i == 0} {
puts yes
}
else {
puts no
}
のようには書けない(これだとelse
が次の行に来る)。正しくは次のようになる。
if {$i == 0} {
puts yes
} else {
puts no
}
switch
もある。見づらいので個人的にはあまり使わない。
switch [オプション] 値 パターン 処理 [パターン 処理 ...] [default 処理]
switch
もコマンドなので、{ }の中の改行を除き、1行で書かなければならない。行をまたぐ時には \ で継続行にしなければならない。例えばこんな感じ。
switch $var \
aaa {puts 1} \
bbb {puts 2} \
default {puts 100}
ループにはwhile
, for
, foreach
がある。
while 条件 処理
for 初期化 継続判定 更新 処理
foreach 変数 リスト 処理
foreach
は例えば次のように使う。
set words {foo baa baz}
foreach w $words {
puts $w
}
#コマンドが返す値の利用
ほかのコマンドが返す値を使いたいことがある。例えばexpr
で計算した値を変数に代入する場合などである。これには[ ]を使う。
set x 10
set y [expr $x*$x]
#コマンドの定義
コマンドの定義はproc
コマンドである。
proc コマンド名 引数リスト 処理
例えば同じ引数を2度繰り返すコマンドは次のように定義できる。
proc dub {x} {
return $x$x
}
同じ引数をn回繰り返すコマンドは(いろんな書き方があるが)次のように書ける。
proc dubn {x n} {
if {$n == 0} {
return {}
} else {
return $x[dubn $x [expr $n-1]]
}
}
その(3)に続く