BT

Kotlin 1.1はコルーチンと型エイリアスを追加し、JavaScriptへのサポートを改善した

| 作者: Sergio De Simone フォローする 12 人のフォロワー , 翻訳者 阪田 浩一 フォローする 1 人のフォロワー 投稿日 2017年3月14日. 推定読書時間: 4 分 |

原文(投稿日:2017/03/09)へのリンク

新バージョンのKotlinは多くの新機能を導入した。最も注目すべきはコルーチンだ。そしてJavaScriptターゲットへのサポートを改善した。KotlinのマーケティングエンジニアであるRoman Belov氏が書いている

まだ実験的と考えられるが、Kotlin 1.1の新機能のキーの1つはコルーチンだ。これは3つの高レベルの概念であるasyncawaityieldを使うことで利用できる。 たとえば非同期処理を扱うためにasyncawaitをどのように使うのだろうか。

// runs the code in the background thread pool
fun asyncOverlay() = async(CommonPool) {
    // start two async operations
    val original = asyncLoadImage("original")
    val overlay = asyncLoadImage("overlay")
    // and then apply overlay to both results
    applyOverlay(original.await(), overlay.await())
}

// launches new coroutine in UI context
launch(UI) {
    // wait for async overlay to complete
    val image = asyncOverlay().await()
    // and then show it in UI
    showImage(image)
}

launchでの使い方に注意してほしい。これはコルーチンを開始する。実際、awaitはコルーチン内かsuspendとともに宣言した関数からのみ使える。これでコンパイラがコルーチン内のその関数を実行する適切なコードを生成できるようになる。

suspend fun workload(n: Int): Int {
    delay(1000)
    return n
}

上記の例のように、delayはコルーチンをその関連スレッドをブロックすることなく中断する。

コルーチンはyieldでシーケンス生成を遅延させるためにも使われる。

// inferred type is Sequence<Int>
val fibonacci = buildSequence {
    yield(1) // first Fibonacci number
    var cur = 1
    var next = 1
    while (true) {
        yield(next) // next Fibonacci number
        val tmp = cur + next
        cur = next
        next = tmp
    }
}

println(fibonacci.take(10).joinToString())

実験的ではあるが、コルーチンはオプトインに限っており、そのAPIは将来のリリースで変更されるかもしれない。

Kotlin 1.1で追加された重要な新機能は他にこのようなものがある。

  • 型エイリアス。型に対して別の名前を定義できる。
  • ::オペレータ。特定のオブジェクトのメソッドへのメンバ参照を取得する。
  • データクラスを継承できる。
  • ラムダでの分解のサポート(訳者注:引数を分解して別々の変数に渡せる分解宣言がラムダでも使える)。

JavaScriptサポートに関して、バージョン1.1へは主にJavaScriptサポートをJVMのものと同等にすることに努力が向けられた。これにより、すべての言語機能はリフレクションを例外として両方のターゲットに対して利用できる。現在JavaScriptではすべての言語機能を利用できない。1.1ではとくに次のことができる。

  • Kotlin標準ライブラリの大部分を現在JavaScript上で使用できる。
  • 生成コードはコード軽量化や最適化のようなJavaScriptツールと親和性がある。
  • external修飾子はKotlinクラスでJavaScriptで実装されることを宣言するために使用できる。

KotlinはオンラインのREPLを使って試すことができる。またはさまざまな方法でインストールできる。

 
 

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