LoginSignup
5
5

More than 5 years have passed since last update.

GroovyのClosureを使ってみる

Last updated at Posted at 2014-02-19

はじめに

Groovyはクロージャ(Closure)が使える。

クロージャが使えると、RubyとかjQueryでよくやるあの感じ(笑)のコーディングが出来る!

つかってみる

スコープ

クロージャはブロックの外側の変数にアクセスすることができる。

closure1.groovy
package co.jp.e2info.groovy

a = "xxx"

c = {
        a = it
        b = it
        println a
    }


c("o_o")

println a
println b

/*
o_o
o_o
o_o
*/

レキシカルスコープ

クロージャが呼び出された場所ではなく、クロージャが宣言されている場所からみたスコープが有効

closure2.groovy
package co.jp.e2info.groovy

a = "xxx"

def c = {
        def a = "x_x"
        return { println a }
    }()

a = "xxx"
println a

c()

/*
xxx
x_x
*/

変数の束縛

クロージャ内で宣言した変数のスコープはクロージャ内のみとなる

closure3.groovy
package jp.co.e2info.groovy

a = "xxx"

def c = {
        def a = "x_x"
        return { println a }
    }()

a = "xxx"
println a

c()

/*
xxx
x_x
*/

本領発揮

必殺!この記法で書くことができると、イテレーションの条件と実際の処理を分離することができる。

closure4.groovy
package co.jp.e2info.groovy

[1, 2, 3, 4].each({x -> println x})

/*
1
2
3
4
*/

総括

便利な機能はどんどん使いましょう

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5