uehaj's blog

Grな日々 - GroovyとかGrailsとかElmとかRustとかHaskellとかReactとかFregeとかJavaとか -

コネタ

static変数にも@Fieldを指定できる

Groovyでstatic変数を@Fieldにしたくなる時があります(@Fieldについてはこちらを参照)。たとえば、 class Hoge { def method() { if (verbose) { .. } } } verbose = cli.parse(args).verboes はエラーになります。なぜなら、バインディング変数は他のクラス…

println -1やprintln[1]はなぜエラーなのか

Groovyで、println -1やprintln[1]を、println(-1)やprintln([1])のつもりで書いても以下のようなエラーになります。 $ groovy -e 'println -1' Caught: groovy.lang.MissingPropertyException: No such property: println for class: script_from_command_l…

GEP3のさらなる拡張

Groovyの1.8のどこか(たぶんbeta3)から、代入式右辺のメソッド呼び出しにおけるカッコの省略ができるようになっています。 home =System.getProperty "groovy.home" foo = System.getProperties().setProperty 'foo', 'bar' // 1.7ではエラーだが1.8の新しい…

Groovyではprivateが無視されるというのはバグとみなされている

これもトリビア。現在のGroovyはprivateを無視します。なのでjava.lang.String#valueの値を変えることも容易にできます。試験に便利なときもあるかもしれません。しかしこの機能(?)は古来からバグとみなされてます。いにしえのjsr-03では禁止されていたらし…

GroovyはPure Javaじゃない

トリビア?です。GroovyはPure Javaじゃないんですね。 $ jar tvf /tool/groovy-1.7.3-bin/lib/jline-0.9.94.jar | grep dll 16069 Fri Feb 22 03:02:14 JST 2008 jline/jline32.dll 48128 Fri Feb 22 03:02:14 JST 2008 jline/jline64.dll groovyに同梱され…

「int i = null」はエラー

groovy 1.8からは、「int i = null」はエラーです。 $ groovy -e 'int i=null' Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'null' with class 'null' to class 'int'. Try 'java.lang.Integer' instead at …