BT

Kotlin1.1へのロードマップ

| 作者: Sergio De Simone フォローする 14 人のフォロワー , 翻訳者 小林 健一 フォローする 0 人のフォロワー 投稿日 2016年7月14日. 推定読書時間: 3 分 |

原文(投稿日:2016/06/08)へのリンク

Kotlinは、バージョン1.1に向けて開発が進められている。 Kotlin言語のリードデザイナ、Andrey Breslav氏は、JetBrain用JVM言語の新バージョンに関するロードマップを説明した。この中で、彼は主な新言語機能について述べている。

Kotlin 1.1はいくつもの新言語機能を提供する。

  • 型エイリアス(type aliases)は、長い型宣言に対する略称指定の仕組みを提供する。 型エイリアスは、新しい型を宣言するものではない。 もともとの型宣言と相互に運用可能な型名を提供するものである。

  • 束縛メソッド参照(bound method references)は、オブジェクトのメンバに対する参照の取得方法を拡張する。 これを使用すると、例えばStringクラスのequalsメソッドに対する参照を取得できる。取得した参照は、別の箇所で、述語として使用可能である。val p: Predicate<String> = “foo”::equals なお、すでにKotlin1.0.xより、型に対しては、この機能がサポートされている。

  • 委譲されたプロパティ(delegated properties)は、トップレベル(クラスや関数の中)で利用できる。

    fun foo() {
      val lazyBar by lazy { ... }
      while (...) {
        if (...) {
          lazyBar.doBaz()
          ...
        }
      }
    }
    

    委譲されたプロパティは、“確実に一度だけ”特定の種類のプロパティを実装するメカニズムである。 たとえば、遅延評価されるプロパティ、観測可能なプロパティ、マップなどに格納されるプロパティなどである。 本機能により、こういったプロパティを、毎回実装する必要がなくなる。

  • データクラス(data classes)は、継承をサポートする。 これにより、別のデータクラスからの派生が可能となる。 データクラスは、データのみを保持するクラスである。 Kotlinは、データクラスに対し、自動的にアクセサ、equalshadhCodeその他共通メソッドを生成する。 データクラスをシールクラス(sealed class)の中で拡張することも可能になる。

    sealed class C() {
      data class Example(...) : C()
    }
    
  • デストラクチャリング(destructuring)は、名前の組み合わせをラムダ式の引数として指定できるようにする。以下に一例を示す。 forEachの引数として値のペアを渡すと、2つのコンポーネント(k、vの2変数)に分解される。

    myMap.forEach {
      (k, v) ->
        println(“$k => $v”)
    }
    
  • コルーチン(coroutines)は、Kotlinの非同期振る舞いの骨格を提供する。 Breslav氏によれば、コルーチンは、C# 5にて導入されたasync/awaitモデルよりも汎用的である。 Kotlinもasync/awaitを提供する。 しかし、Kotlinの場合はコルーチンを元に構築されており、プリミティブではない。

    fun loadImage(url: URL) = async {
      val bytes = await(loadBytes(url))
      bytesToImage(bytes)
    }
    

Kotlin1.1は、Java8/9の機能(デフォルトメソッド生成など)を直接サポートする。 加えて、JavaScriptバックエンドが言語機能セットとして取り込まれる。

Kotlinの開発は、Kotlin Evolution and Enhancement Process (KEEP)が主導している。 GitHubリポジトリには全ての計画済みユースケースが記載されている。

Kotlin1.1は旧バージョンに対してソースコード、バイナリのどちらも互換性を維持する。 新バージョンのKotlinコンパイラは、旧バージョンのソースコードやバイナリによって停止することはない。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT