Skip to content

Instantly share code, notes, and snippets.

@touchez-du-bois
Created October 11, 2010 05:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save touchez-du-bois/620045 to your computer and use it in GitHub Desktop.
Save touchez-du-bois/620045 to your computer and use it in GitHub Desktop.
// g100pon #64 クロージャとdelegate
// 要素を表示するクロージャ
def printElements = {
delegate.each {
println it
}
}
// クラスにクロージャを追加
ArrayList.metaClass.printElements = printElements
LinkedHashMap.metaClass.printElements = printElements
String.metaClass.printElements = printElements
// 出力結果を取得できるように標準出力を切り替え
def prevOut = System.out
def byteArray = new ByteArrayOutputStream()
System.out = new PrintStream(byteArray, true, 'UTF-8')
[1,2,3,4,5].printElements()
assert ['1','2','3','4','5'] == byteArray.toString().split("\n")
byteArray.reset()
[a:1, b:2, c:3, d:4, e:5].printElements()
assert ['a=1','b=2','c=3','d=4','e=5'] == byteArray.toString().split("\n")
byteArray.reset()
"Groovy".printElements()
assert ['G','r','o','o','v','y'] == byteArray.toString().split("\n")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment