第13回 G* ワークショップ+忘年LT大会
- kimukou2628
- 2138
- 0
- 1
- 0
事前にコンパイルするかどうかだけの違いで生成バイトコード列は同じです RT @nahi: groovycって、groovyとほぼ同じ処理をするんでしょうか。ちなみにjrubycはjruby本体とは異なる動きをするコードを生成します。 #jggug
2010-12-09 19:29:27groovypp/bin/groovy foo.groovyしても、GROOVY_HOMEをちゃんとgroovyppのものにセットしておかないと動きません。今までハマってたw @Typedで生成されるシンプルなコードを見損ねた! #jggug
2010-12-09 19:31:04#jggug live at http://ustre.am/rhjh 錬金術の代償(等価交換による)は?> @Typed つけられるいちが決まっています。 クラスとか関数とかパッケージとか NGケース) @Typed println "hello"
2010-12-09 19:31:35@Typedアノテーションは(もしくはアノテーション一般に)文には付けられない、という理解でいいのかな。 #jggug ( #jggug live at http://ustre.am/rhjh)
2010-12-09 19:31:53#jggug live at http://ustre.am/rhjh OKケース) @Typed package aaa println "hello"
2010-12-09 19:32:27@uehaj ありがとうございます。つまり、あれを動かしてるんですねえ。JVM JIT対策のしがいがありそう。ちなみにjrubycも全部バイトコード変換しますが、普通のjrubyはインタプリタ→JRuby JITに移行、です。 #jggug
2010-12-09 19:33:25MOPで実行時にメソッドを追加しそれを呼ぶコードは、Groovy++ではコンパイルエラーになる(ある意味かくあるべき)。さらに@Typed(TypePolicy.MIXED)を付けると呼べる! #jggug
2010-12-09 19:34:47TypePolicy.MIXEDは塩梅良くやってくれるw ( #jggug live at http://ustre.am/rhjh)
2010-12-09 19:35:29#jggug live at http://ustre.am/rhjh 実行時に解決する物は動きません> String.metaClass.p={ println ${delegate} } "ほげほげ".p() @Typed(TypePolicy MIXED)使う
2010-12-09 19:35:44typedさんに @ が飛んでる予感w ( #jggug live at http://ustre.am/rhjh)
2010-12-09 19:37:04groovyppのTraitTestのコードをみて衝撃を受けた。Traitアノテーションを付けたクラスAとBを使って、class C implements A, Bと書けるようにする黒魔術らしい。実装(or抽象)クラスだけどインタフェースっぽく多重継承が可能になる。 #jggug
2010-12-09 19:37:04#jggug live at http://ustre.am/rhjh privateプロパティ、関数> groovy ・・呼べる groovy++ ・・呼べない
2010-12-09 19:37:24Groovy++ではクラス外からprivateメソッドが呼べない。常識はずれだなあw。 #jggug ( #jggug live at http://ustre.am/rhjh)
2010-12-09 19:37:26あ、StaticCompilerにtailRecursiveメソッドを見つけた。やはり何かをしてるっぽい。でも、バイトコードいじったとして実現できるんだっけ? #jggug
2010-12-09 19:39:43privateを呼べないのは小学生までですよねー RT @uehaj Groovy++ではクラス外からprivateメソッドが呼べない。常識はずれだなあw。 #jggug ( #jggug live at http://ustre.am/rhjh)
2010-12-09 19:39:52JUnit初心者「privateメソッドをテストしたいんですけどどうしたらいいですか?」グル「Groovyを使いなさい」 #jggug
2010-12-09 19:40:54Interesting: with @Typed Groovy++, you cannot access non final variable in outer scope from within closure. #jggug
2010-12-09 19:41:36Groovy++のクロージャ内からのローカル変数ポリシーは暗黙finalでJavaの内部クラスのそれやjava8のclosureに近いが、groovy.lang.Referenceをつかって変更もすることもできる。 #jggug
2010-12-09 19:42:44#jggug live at http://ustre.am/rhjh インナー関数内のdef変数がfinalにしろと言われてしまう 解決案> 1)ロジック変更(findAllで書き直す) 2)groovy.lang.Refarenceクラスを使う<defの代わりに
2010-12-09 19:42:44ちょwwwwwRT: JUnit初心者「privateメソッドをテストしたいんですけどどうしたらいいですか?」グル「Groovyを使いなさい」 #jggug (via @nobeans)
2010-12-09 19:42:54*.java を *.groovyに書き換えてテストしてから元に戻すantなりがあれば・・ QT @nobeans: JUnit初心者「privateメソッドをテストしたいんですけどどうしたらいいですか?」グル「Groovyを使いなさい」 #jggug
2010-12-09 19:44:01フィールドのprivateはgetter/setterの自動生成を抑止する意味はあるけど、メソッドに対するprivateは単にドキュメンテーション目的程度に使ってるな。「外から使うなよ。絶対だぞ!」 #jggug
2010-12-09 19:44:04