プログラミング

プログラミング

PR

Kotlin 1.2 はどう変わった? 8つの変更点と追加機能

RankRED

RankRed is a place where you can find a lot of interesting and inspiring stuff about science and technology, internet, programming tools and plugins, robots, machines and high tech gadgets, and much more.

本記事は、What’s New In Kotlin 1.2 | 8 Added Features and Changes
翻訳・再構成したものです。
配信元または著者の許可を得て配信しています。

282 views

読了時間 : 約2分59秒

2011年に初めて登場した静的型付けプログラミング言語Kotlinは、近年急速に普及しています。これまでのデータや予測によると、Google I/O 2017以前にJavaで構築されたアプリケーションの20%以上が、Kotlin言語で構築されています。将来的には、サーバー上でJavaの使われ方が変わる可能性があります。2018年12月にはKotlinがJavaを上回ると予想されています。

 

 

Kotlin 1.2のベータ版がリリースされました。当然ですが、Kotlin標準ライブラリの強化だけでなく、コンパイラーとツールの安定性とバグ修正に重点が置かれています。どのような変更がなされ、どのような機能が追加されたのか見てみましょう。

 

8. 警告をエラーとする

 

Kotlinコンパイラーには、プログラムの警告をすべてエラーとすることができます。上に示したコードを追加するか、コマンドラインで-Werrorとタイプするだけです。

 

7. 型推論の改善

コンパイラは型推論で型キャスト情報を導入しました。型パラメータSを返すジェネリック・メソッドを呼び出し、その戻り値を特定の型XYZにキャストした場合、コンパイラーはこの呼び出しのSが型XYZにバインドされるべきであることを自動的に知らせるようになっています。

 

6. バウンド呼び出し可能参照のショートハンド構文

 

 

Kotlin1.2では、this::doWorkのようにthisの中にバインドされた参照を生成する式でこれを排除できます。::doWorkと入れるだけです。

 

5. 新しいパッケージ

Kotlinの標準ライブラリーは、Java 9モジュール・システムと互換性があります。クロスプラットフォームのコードで数学演算を実行するために、kotlin.mathという新しいパッケージが追加されました。

 

Kotlin 1.2では、逆双曲線関数(acosh、asinhand atanh)を使えるようにしました。また、nextUPやtoBitsといった浮動小数点数を2進数に変換する関数がJavaScriptで利用できるようになりました。

 

4. スマートキャストが使いやすくなった

 

Kotlin 1.2は、セーフ・キャストのサブジェクト(およびセーフ・コールのレシーバー)のスマート・キャストを使うことができます。

 

 

さらに、スマートキャストは、クロージャの前(内部でも後でもない)にローカル変数が変更されると許可されます。

 

3. レイトイニットが新しくなった

 

 

Kotlin 1.2には、lateinit変数が初期化されたかどうかを検証する新しいリフレクションAPIが付属しています。

 

lateinit修飾子は、ローカル変数やトップレベルのプロパティにも使うことができます。例えば、オブジェクト・グラフ内のオブジェクトが循環依存関係にある場合に、オブジェクト・グラフを初期化する際に使用することができます。

 

2. 注釈の中の配列リテラル

Kotlinがアノテーションで配列リテラルを挿入できるようになりました。 例えば

@CacheConfig(cacheNames = arrayOf(“computers”, “tablets”))

@CacheConfig(cacheNames = [“computers”, “tablets”])

と、リテラル式に簡略化できます。

 

varargパラメータだけでなく、配列にも配列リテラルを使えるようになりました。

 

@RequestMapping(value = [“12345”, “54321”], path = [“pathA”, “pathB”])

 

1. マルチプラットフォーム・プロジェクト

新しい実験的な機能で、ユーザーはサポートされているターゲット・プラットフォーム(JavaScriptとJVM)の間でコードを再利用することができるようになっています。プラットフォーム間で共有されるコードは共通のモジュールに、プラットフォームに依存する部分はプラットフォームに依存するモジュールに分けられます。

 

一般的な部分もプラットフォーム固有のコードも、ユーザーが特定のプラットフォームでこの種のプロジェクトに当てはまるときに生成されます。

 

マルチプラットフォーム・プロジェクトでは、プラットフォーム固有の部分にある共通コードを、実際のコードと想定されるコードに分けて定義することができます。実際のコードとは、外部ライブラリのAPIの既存の実装を参照するtypaliasか、プラットフォーム依存のものです。期待される宣言はAPI(アノテーション、インターフェース、クラスなど)を定義しています。

 

すでにこの機能を使用している場合は、headerとimplをexpectedとactualに置き換える必要があります。

おすすめ新着記事

おすすめタグ