version 3.1.6 リリース 2017/11/21
isメソッドがAnonymousメソッド以外にも呼べるようになりました。List<Object>などで便利だと思います。
> a := new List<Object>();
> a.add(1);
> a.add("ABC");
> a.each {
> if(it.is("String")) {
> it.printf("[%s]"); # itはString型
> }
> elif(it.is("Integer")) {
> it.printf("[%d]"); # itはInteger型
> }
> }
みたいな感じです。その時気づいたのですが、List<Object>に1をaddする時boxingもされずにObject型に代入できてしまうためセグメンテーション違反が出てました。ちゃんとインタフェースにはプリミティブ型は代入できないようにチェックするようにしました。またインターフェースへのプリミティブ型の代入はboxingされるようにしました。上のコードはversion 3.1.6ではちゃんと動きます。