カサレリア。katzenです。
今回はループ処理を紹介しましょう。
for
まずは基本
そこまで困らないと思います。
Cなどに慣れている方はこちら
for i:=0;i<10;i++ {
print(i)
}
// >>> 0123456789
よくある書き方ですが、V言語として気にする箇所は、
i
がmut
で宣言されていないのに、なぜi++
と足していけるのかというところです。
これはC言語風にしたかったので、このようなスタイルにしたみたいでです。
そのため、特例的に許可されています。
for in
もあるのですが、配列を扱うときに紹介したいと思います。
while,break
while(true)
見たいな無限ループは条件式を省略して書けます。
breakはループを抜けるときにつかいますね。
j := 0
for {
print(j)
if j++ == 9 {
break // ループを抜けます
}
}
// >>> 0123456789
continue
continueを指定することでループのはじめに戻すことが出来ます。
mut k := 0
for k++ < 10 {
if 0 == k %2 {
continue // 偶数だったらループの始まりに戻る
}
print(k)
}
// >>> 13579
label
また、continue
,break
はラベルを使用することが出来ます。
<ラベル名>: for // ...
// ...
continue <ラベル名>
// ...
break<ラベル名>
の様に書きます。
これで何が出来るかというと、何もラベルを付けない場合、今いるループを再開したり、抜けたりするだけなのですが、「この条件だったら全部のループを抜けたい!」となった場合、一気に抜けることが出来ます。
outer: for i := 0; i<5 ; i++ {
print("${i}:")
for j := 0;j<5 ;j++{
if j > i { // jがiより大きくなったらルートループへ
println("")
continue outer
} else if i > 3 { // iが3を超えたら終了
println("bye")
break outer
} // if
print(j)
} // for
println("ここへはこないよ")
} // for
// 0:0
// 1:01
// 2:012
// 3:0123
// 4:bye
少しわかりにくいかもしれませんが、もしそんなシーンが来たら、continueやbreakにラベルが指定できると思い出してください。