SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Groovy+GrailsでRailsなWeb開発

Groovyってどんな言語?
JavaプログラマのためのGroovy入門

Groovy+GrailsでRailsなWeb開発 第1回


  • X ポスト
  • このエントリーをはてなブックマークに追加

条件分岐

 続いて、制御構文についても見ていきましょう。まずは条件分岐です。これは、Javaと同じくif文で記述します。ifについては、ほとんどJavaと同じと考えてよいでしょう。ただし、条件の設定などで一部機能が拡張されています。

num = new Random().nextInt(100)
if (num % 2){
    println "${num}は、奇数"
} else {
    println "${num}は、偶数"
}

 これは、100までのランダムな整数を作成し、偶数か奇数かを表示するものです。ifでは、njum % 2が条件として指定されています。Javaではifだと、条件はnum % 2 == 1というような形で指定する必要があるでしょう。が、Groovyの場合、「ゼロやnullはfalse、それ以外はtrue」と判断します。num % 2だけで真偽値の代りになるのです。

図8 乱数を作成し、偶数か奇数を調べて表示する。
図8 乱数を作成し、偶数か奇数を調べて表示する。

switch文

 Groovyのswitch文はJavaに比べ強力です。caseでの値の指定に、整数以外の値を指定することができるのです。

val = new Random().nextInt(10)
switch(val){
    case [0,2,4,6,8]:
    println "${val}は、偶数"
    break
    case [1,3,5,7,9]:
    println "${val}は、奇数"
}

 これは、先ほどのランダムに数字を用意し偶数奇数を判定するプログラムをswitchで修正しました。おどろくべきは、caseに配列が渡されている点でしょう。valの値が、caseの配列内にあれば、それが実行されます。また値だけでなく、String,Integerというようなタイプ名を指定し「値がStringならこの処理を実行」というようなことも可能です。

繰り返し

 Javaでは、繰り返しはforとwhile文で実現していました。Groovyにも、for構文はあります。ただし、構文の基本的な使い方はJavaとはかなり異なります。

for( 変数 in 配列 )

 このようにして記述します。例えば、配列の要素をすべて合計するような例を考えてみましょう。すると、次のようになります。

arr = [1,2,3,4,5]
n = 0
for(item in arr){
    println("$n + $item = " + (n + item))
    n += item
}
println "合計:$n"
図9 配列の要素を順に取り出し加算していく。
図9 配列の要素を順に取り出し加算していく。

 もし、どうしてもJavaのようにfor(int i = 0;i < n;i++)というような形式にこだわりたいのであれば、次のような書き方もあります。

n = 0
for(i in 0..5){
    println("$n + $i = " + (n + i))
    n += i
}
println "合計:$n"

 ここでは、繰り返しはfor(i in 0..5)というように記述されます。この0..5というのは「レンジ(Range)」と呼ばれる値です。これは、[0,1,2,3,4,5]という配列と同じものと考えてよいでしょう。このように記述することで、カウンタ変数を利用したforと同じ感覚で記述できます。

 もちろん、Javaと全く同じスタイルでforを使うことも可能です。例えば、今のサンプルならば次のように書くこともできます(ただし、一般的には動作速度などの点から、Groovyではあまり用いられないでしょう)。

n = 0
for(def i = 0;i < 5;i++){
    println("$n + $i = " + (n + i))
    n += i
}
println "合計:$n"

 もう1つの繰り返しである「while」は、Javaとほとんど同じです。whileのあとに()をつけ、そこで繰り返しの条件を設定します。この場合も、ifの場合と同様、条件には真偽値以外の値を代入することができます。

次のページ
クロージャ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Groovy+GrailsでRailsなWeb開発連載記事一覧

もっと読む

この記事の著者

掌田 津耶乃(ショウダ ツヤノ)

三文ライター&三流プログラマ。主にビギナーに向けたプログラミング関連の執筆を中心に活動している。※現在、入門ドキュメントサイト「libro」、カード型学習サイト「CARD.tuyano.com」を公開...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3757 2009/04/02 09:49

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング