Ccmmutty logo
Commutty IT
2 min read

第10話 V言語のループ処理

https://cdn.magicode.io/media/notebox/blob_q19MAzy
カサレリア。katzenです。
前回、V言語で超簡単なゲームを作る2を再開しましたが、処理を繰り返す必要があることがわかりました。
今回はループ処理を紹介しましょう。

for

まずは基本
for <終了条件> {

そこまで困らないと思います。
Cなどに慣れている方はこちら
for i:=0;i<10;i++ {
  print(i)
}
// >>> 0123456789
よくある書き方ですが、V言語として気にする箇所は、 imutで宣言されていないのに、なぜ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にラベルが指定できると思い出してください。
ループによって処理を繰り返すことが出来るようになりました。
次回「V言語で超簡単なゲームをつくる3」見てください!

Discussion

コメントにはログインが必要です。