こんにちは!なるーらぼです。今回はGroovyにおける制御構文を見ていきたいと思います。
まずはプログラミングするうえで欠かせない、「条件によって実行する命令を変える」という条件分岐についてお話しします。
if / else文
まずは「もしも・・・ならば、違えば・・・」という分岐方法をみていきましょう。なおGroovyではJavaと同じ構文をサポートしているため、同じ内容になります。
def name = 'nalulabo'
if(name == 'nalulabo'){
println "Hey, $name!"} else {
println "hahaha!"
}
「if」に続く丸括弧の中へ条件を記述します。この条件が真、つまりtrueになるとifに続く波括弧の中のコードが実行されます。
上記の例では名前の変数に「nalulabo」と指定されているかどうかを確認しています。
ここではされているので条件は真になります。すると波括弧の中に記述されている「println "Hey, $name!"」が実行されます。結果として「Hey, nalulabo!」と出力されます。
もしも変数nameの内容を別の内容にした場合はifの丸括弧の中は偽になります。
するとelseの波括弧の中が実行され、結果として「hahaha!」が出力されます。
なお、条件に合致しなかった場合に何も実行しなくてよいときはelseの波括弧は不要です。
if(name == 'nalulabo'){
println "Hey, $name!"
}
上記のコードでは変数nameの内容が「nalulabo」でない場合には何も出力されません。逆に、もう一つ以上の条件を加えたい場合はifの波括弧の後に「else if」を記述して、丸括弧内へ新たに条件を書きます。
if(name == 'nalulabo'){
println "Hey, $name!"
} else if(name == 'm0t0k1') {println "Hello, $name."
} else {
println "hahaha!"
}
なお、このときもelseが不要であれば省略しても構いません。ちょっと気持ち悪い気がしますが。
ところで、rubyをご存知の方でifを命令の後ろへ配置する書き方が好きな方には残念なお知らせです。Groovyでは後置のifをサポートしていません。ですから、以下のコードはコンパイルエラーになります。
println "hello" if(name == 'nalulabo')
switch / case文
これも基本的にJavaと同じ文法になりますが、違う点があります。というのも、Javaよりも幅広いチェックをサポートしているということです。記述は以下のようになります。
def name = 'nalulabo'
def result = ""
swtch(name) {case 'nalulabo':
result = "Hey"
case 'foo':
result += 'hooo'
break
default:
result = 'default'
}
switchの丸括弧の中へ評価する値を入れます。そして条件をcaseに続けて書きます。
条件の終わりにはコロン記号を書きましょう。そして条件に合致したときの命令を続けて記述します。
上記の例では最初のcaseで条件に合致しますが、breakが記述されているのが次のcaseでのコードですので「Heyfooo」という結果になります。
また、Groovyではswitchに指定されたオブジェクトのクラスで分岐させることもできます。
def hoge = 1.23
switch(hoge){
case Integer:result = "Integer"
break
case BigDecimal:
result = "BigDecimal"
break
default:
result = "default"
}
上記の例では「BigDecimal」という結果になります。このほかに、リストのリテラルやレンジ、正規表現のパターン、クロージャも指定することができます。
最後に
今回は条件分岐についてみてきました。
switchでリストやレンジでチェックをする場合は、それらの中に含まれているかどうかをチェックされるので便利につかうこともできると思います。いろんな用途がありそうですね。
次回は反復構文についてみていきたいと思います。
0コメント