Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなコンパイラ+仮想マシンの開発日誌です。LLVMでJITもします。https://github.com/ab25cqにて開発しています。

色々便利に

sortable_list{1,2,3}がslist{1,2,3}, equalable_list{1,2,3}がelist{1,2,3}と省略できるようになりました。sortable_array, equalable_arrayも同様です。

 

a := 123; "a is \{a.toString()}"がa := 123; "a is \{a}"と書けるようになりました。(toStringが自動的に呼ばれる)

 

後メソッドブロックの型推論についてはwikiに書いたとおりです。メソッドブロックの引数は省略するとit, it2, it3, it4,...となります。戻り値も推論されます。メソッドブロックの戻り値にはreturnが必要なくなりました。(戻り値の型も推論されます)

 

slist { 1,2,3 }.each { it.toString().println() }

a:SortableList<String> = slist { 1, 2, 3 }.map { it.toString() }

 

のような感じです。

 

一応上記の変更は後方互換性があるので、今までのソースを変更する必要はありません。ただ、便利になっただけです。

 

良かったら使ってください。

 

それでは、enjoy programing!