SHOEISHA iD

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

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

Groovy+GrailsでRailsなWeb開発

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

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


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

クラスとメソッドの定義

 クラスの定義は、Javaと同様、「class クラス名」の後に続く{}内に記述をします。クラス内にはメソッドとフィールドをおくことができます。これらは「def 名前」といった形で定義をします。例えば、簡単なクラスを作成してみましょう。

class Helo {
    def msg

    Helo(s){
        msg = s
    }

    def sayHelo(){
        println msg
    }
}

 ここでは、msgというフィールドと、Heloコンストラクタ、そしてsayHeloメソッドがクラスに用意されています(クラス名と同名のメソッドはコンストラクタとして扱われます)。このようにして定義されたHeloクラスを利用してメッセージを表示するには、例えば次のようにすればよいでしょう。

new Helo("こんにちは").sayHelo()
図6 Heloインスタンスを作成しsayHeloを呼び出して実行する。
図6 Heloインスタンスを作成しsayHeloを呼び出して実行する。

ルーズステートメント

 Javaでは、すべての文は常にクラス内のメソッドの中に記述しなければいけませんでしたが、Groovyはそうではありません。Groovyの文は、「どこにも所属しない」「(クラスに含まれていない)メソッド内」「クラスの中にあるメソッド内」のいずれにも書くことができます。

getMsg("こんにちは")

def getMsg(msg = "Message"){
    println msg
}

 例えばこれはgetMsgというメソッドを定義し、それを呼び出して実行しています。クラスは使っていませんが、ちゃんとスクリプトは動きます。ここでのgetMsg("こんにちは")のように、メソッドやクラスに含まれない文を「ルーズステートメント」と言います。

リストとマップ

 Groovyでは、配列や連想配列に相当するものが「リスト」と「マップ」として用意されています。これは、[]記号を使って作成します。配列は各値をカンマで区切って記述します。連想配列は、キーと値をコロンでつなげて記述します。例えば、次のような具合です。

arr = [1,2,3]
arr = ['one':1, 'two':2, 'three':3]

 このリストとマップは、Javaの配列などと比べると非常に柔軟な扱いが可能です。例えば、割り算を除く四則演算を使うことができます。

arr = [1,2,3]
arr += [4,5]
arr -= [2,4]
arr *= 2
println arr
図7 配列を演算する例。
図7 配列を演算する例。

 例えば、このようにすると、[1,3,5,1,3,5]という配列が得られます。[1,2,3]に[4,5]をたして[1,2,3,4,5]になり、そこから[2,4]を引いて[1,3,5]になって、これが2倍され[1,3,5,1,3,5]となったわけです。

 また、連想配列の場合、値を取り出すのに[]ではなく、ドットでキー名を続けて記述することもできます。例えば、以下の2つのprintlnでは、いずれも同じ値を出力します。

arr = ['one':1, 'two':2, 'three':3]
println arr['one']
println arr.one

 配列と連想配列は、Groovyの内部では、実はJavaのArrayListとLinkedMapが使われています。これらに各種機能を追加して利用しているのです。

次のページ
条件分岐

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

  • 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」など、さまざまなカンファレンスを企画・運営しています。

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

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

メールバックナンバー

アクセスランキング

アクセスランキング