Groovy勉強中 - その2

型の宣言

def String foo = "test"

動的言語でありながら変数の型を宣言することが可能。下記は実行時エラー

def Integer foo = "test"

 これはJava経験者を意識してるんでしょうかね。実行時にしかエラーが出ないのであればあんまり意味が無いような気がしますし、動的言語の利点が生きないきがしますがIDEのサポートが強力になるとリアルタイムで警告出してくれるようになるのかな??

追記:
 こちらにてGroovyにおける型指定に関して述べられているのを読ませていただきました。なるほど!!


・不思議な挙動

def Integer foo = "a"

println foo

上記を実行すると

97

と表示される。。。いろいろ試した結果、値が1文字*1であればいろんな数字が出力されるようです。う〜ん、どういうことだろ??


追記2(12/14):
 コメントを頂きました。どうやらJavaとの互換性を意識した結果このような振る舞いになるとのこと。というかcharが16bit整数(0〜65535)を取ることができるとは知りませんでした・・・orz ギークな方々に怒られそう><

   int i = 'a';
   System.out.println("i="+i);
   char a = 98;
   System.out.println("a="+a);

上記(Java)の出力結果

i=97
a=b

*1:1バイトとか2バイトとか関係ない模様