第3回

いない [9/19 13:04:24]

テスト

kiy0taka [9/19 13:15:40]

自己紹介なう。

ゲンゾウ [9/19 13:21:22]

はじめます。

fujwara [9/19 13:21:26]

つながったかな?

ゲンゾウ [9/19 13:24:10]

アドレスバーに貼り付けて。

javascript:if([]) alert('tst');void(0);

ゲンゾウ [9/19 13:25:00]

groovyは空配列はfalseだよ。

kiy0taka [9/19 13:27:35]

println (!![])

kiy0taka [9/19 13:28:00]

!×2回でオブジェクトをbooleanに返れる。

& lt;div class="log">

fujwara [9/19 13:30:46]

!![] 命名「すごいびっくり」

adsh1y0 [9/19 13:31:01]

test

ゲンゾウ [9/19 13:33:27]

// リストが空かどうかの判定は

if( list ) ・・・

if( list?.isEmpty() ) ・・・

ってしなくていいよ。

kiy0taka [9/19 13:35:29]

三項演算子はメンテされるときに、よけいな処理を入れられないという防御になる!

ゲンゾウ [9/19 13:46:37]

[1,2,3].isCase(2)

ゲンゾウ [9/19 13:46:59]

switch(2){

case [1,2,3]:

assert true;

}

ゲンゾウ [9/19 13:56:45]

groovy:000> import org.codehaus.groovy.runtime.NullObject

===> [import org.codehaus.groovy.runtime.NullObject]

groovy:000> switch(null){

groovy:001> case NullObject: print(true)

groovy:002> break

groovy:003> }

===> null

ゲンゾウ [9/19 13:57:08]

null はNullObjectなので、caseにはいるかな?と思ったけど入らなかった。

ゲンゾウ [9/19 13:58:29]

groovy:000> NullObject.isCase(null)

===> false

だそうです。よくわからん。

ゲンゾウ [9/19 14:09:06]

ちなみに

groovy:000> String.isCase("")

===> true

ゲンゾウ [9/19 14:10:32]

groovy:000> null.isCase(null)

===> true

groovy:000> null.getClass().isCase(null)

===> false

fujwara [9/19 14:15:23]

for ( String i in 'a'..'c' ) store += i

('a'..'c').each{ store2 += it }

もう、for文いらない?

kiy0taka [9/19 14:24:29]

覚えとく。

('12xy3' =~ /\\d/).each { println it }

kiy0taka [9/19 14:52:08]

おださんのセッション中!

わたびき [9/19 15:03:42]

「良いところを見せつける」重要

kiy0taka [9/19 15:11:04]

テストコードをGroovyでかける許可がおりたのがスゴい!

< /div>

ゲンゾウ [9/19 15:25:12]

cloud foundry使ってみたい!!

ゲンゾウ [9/19 16:21:48]

static args){

・・・

}

はいけるが

args){

・・・

}

はいけない。なぜ?

ゲンゾウ [9/19 16:21:54]

おこっとるw

ゲンゾウ [9/19 16:22:23]

static a(args){

・・・

}

はいけるが

a(args){

・・・

}

はいけない。

ゲンゾウ [9/19 16:23:49]

メソッド宣言時には先頭になんかつけろってことと勝手に解釈。

たとえば上の例だと、

public a(args){

・・・

}

は正常に動作した。

ゲンゾウ [9/19 16:32:49]

kiy0taka [9/19 16:32:53]

ゲンゾウ [9/19 16:33:04]

?:

ゲンゾウ [9/19 16:33:10]

kiy0taka [9/19 16:33:14]

fujwara [9/19 16:33:18]

ゲンゾウ [9/19 16:33:27]

:<

fujwara [9/19 16:33:31]

aaax(aaa)

fujwara [9/19 16:33:39]

?:

ゲンゾウ [9/19 16:50:34]

当然だけどこれは動く。

groovy:000> class Book{

groovy:001> String name

groovy:002> }

===> true

groovy:000> class Genzou{

groovy:001> String age

groovy:002> Book book

groovy:003> }

===> true

groovy:000> genzou = [age:'29', book:[name:'groovy in action']]

===> [age:'29', book:[name:'groovy in action']]

fujwara [9/19 16:51:52]

class B{

def var

def cnt

B(){}

B(def var, def cnt){}

B(def var){println "くわれた"} // こいつがあるとまずい

}

b = new B(var:100 , cnt:200)

println b.dump()

ゲンゾウ [9/19 17:11:16]

当たり前だけどコンパイルエラー。

package java.lang

import java.lang.String as S

class String extends S{

public String toString(){

println "aabbcc"

return "aabbcc"

}

}

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, cyclic inheritance involving java.lang.String in class java.lang.String

ゲンゾウ [9/19 17:33:06]

String x

println((x.properties as Map).class)

ってすると、

class java.lang.String

と表示される。

一瞬あせったけど、よく考えると理由がわかる。

ゲンゾウ [9/19 17:33:37]

println((x.properties as Map).getClass())

との違いに注意。

ゲンゾウ [9/19 17:46:11]

gmavenはおださんが今後しらべてくれるらしい(?)

お だ [9/19 17:49:28]

おおっと…あまr

お だ [9/19 17:49:45]

あまり期待しないでください_ _

fujwara [9/19 18:01:22]

今日のピザは・・・・・

fujwara [9/19 18:02:24]

Lサイズヲ2枚・・・・

ゲンゾウ [9/19 18:14:40]

ゲンゾウ留守番中。みんなで買出し。