-- / --
--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

12 / 08
Sun

視力が 0.03 の Ziphil です。

IntelliJ IDEA 13 と Kotlin M6.2 がリリースされてましたね。 ということで、 Kotlin M6.2 の新機能を調べてみました。

関数型プログラミング好きの人に良いお知らせです。 Kotlin は末尾再帰最適化 (Tail Call Optimization, TCO) に対応しました。 これによって、 スタック領域を使いすぎる心配をすることなく、 関数型的なコードを書けるようになりました。

・・・なるほど。 で、 「末尾再帰最適化」 というのは何なのか調べてみると、 再帰的に関数を呼び出すような関数を効率良く実行できるようにすることらしいです。

知られている通り、 Kotlin は型に非常に厳密で、 数値型でさえも暗黙に型変換されるのが許されていません。 これは、 全ての型をクラスとして同様に定義し、 ときどき Java によって作られる奇妙なコードを避けるために、 不可欠なものです。 幸いにも、 Kotlin には定数表現に関する機能が組み込まれているため、 これによって多少不便になるような部分を、 ほとんど除くことができます。 今回のアップデートで、 この機能が完成され、 val x: Long = -1val x: Byte = -1 のように書くことができるようになりました。 より詳しく言えば、 コンパイラが定数表現を計算し、 その定数が予期されている (Long や Byte といった) 型に対応できるかどうか調べ、 定数を変換する、 ということが内部で起こっています。

確かに、 Int 型以外の数値の変数を初期化するとき、 val x: Long = 1.toLong() と書かなければいけなくて、 少し面倒でしたね。 今回のアップデートで、 型変換を自分でやる必要がなくなったわけです。

また、 よく知られている接尾辞 「L」 を数値につけることができるようになりました。 なお、 Long 型に対する接尾辞 「l」 は、 この文字が多くのフォントで 「1」 と良く似ているということで有名なため、 使うことが許されていません。 同様に、 Float 型に対し接尾辞 「F」 を使えるようになりました。 「f」 はどの数字にも似ていないし、 けっこう良い感じに見えるので、 こちらは使うことは禁止されていません。

Java にもあった、 型を示す接尾辞が実装されたようです。 「1」 と似てるからといって 「l」 を禁止する必要はなかった気もしますが、 見やすいコードを書かせるためでしょうかね。

M6.2 での主なアップデートはこの 2 つでしょうか。 これ以外にも Java との連携などに関する新機能がいくつかありますが、 ここで詳しくは説明せず、 箇条書きにとどめておきます。 詳細は、 公式ブログを見てください。

  • Java で @ReadOnly アノテーションをつけることで、 Kotlin ではイミュータブルな配列にすることができるようになった。
  • Kotlin のコードをコンパイルすると、 バイトコードに @Nullable と @NotNull が自動的につけられるようになった。
  • Android SDK 用のアノテーションが追加された。
  • JavaScript への変換が改良された。

これに合わせて、 IDEA 13 の方もアップデートされていて、 コード保管などが改良されているみたいです。

スポンサーサイト

comment ×0
コメント
管理者にだけ表示を許可する
 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。