Category Archives: Kotlin

Kotlin 1.2 リリース: プラットフォーム間のコード共有

Kotlin 1.2をリリースしました。これはKotlinをモダンなアプリケーションの全てのコンポーネントに渡って利用できるようにするための大きな一歩となるメジャーリリースです。 Kotlin 1.1でJavaScriptを正式なターゲットにし、KotlinコードをJSへコンパイルしてブラウザで動かせるようにしました。そしてKotlin 1.2ではKotlinコードをJVMとJavaScript双方で共用できるようにしました。ビジネスロジックを一度書けば、バックエンドでもフロントエンドでも、そしてAndroidのモバイルアプリケーションでも利用出来ます。そしてクロスプラットフォームのシリアライゼーションライブラリなど、コードの再利用性を高めるためのライブラリ開発も進めています。 Kotlin 1.2はすでに、本日リリースのIntelliJ IDEA 2017.3に含まれています。別のIDEバージョンをご利用であればTools | Kotlin | Configure Kotlin Plugin Updatesダイアログよりインストールできます。 このリリースは社外の沢山のコントリビューターの成果が含まれています。フィードバックを送ってくれた方々、問題を報告してくださった方々、そして特にプルリクエストを送ってくださった方々に感謝いたします。 マルチプラットフォームプロジェクト マルチプラットフォームプロジェクトはバックエンド、フロントエンド、Androidといった複数の層を同じコードベースからビルドする仕組みです。このプロジェクトではそれぞれcommon moduleを含みます。common moduleはプラットフォームから独立したコードとプラットフォーム(JVMまたはJS)固有のコードからなります。後者からはプラットフォーム依存のライブラリを呼び出すことができます。プラットフォーム固有のコードをcommon moduleから呼び出すには”expected”宣言を記述し、”expected”宣言に対応する”actual”実装を各プラットフォーム向けに実装することになります。 この機能について寄り詳しくはドキュメント(英語)をご覧ください。 ロジックをcommonコード側により多く記載出来るよう、以下のライブラリを開発・提供しています: kotlin.test: Kotlin 1.2にデフォルトで含まれています。テストを一度書けばJVMとJSで実行できます kotlinx.html: マルチプラットフォームでのレンダリング(isomorphic rendering)を実現します。同じコードを利用してバックエンドでもフロントエンドでもHTMLをレンダリングできます kotlinx.serialization: JSONまたはProtoBufをシリアライゼーションフォーマットに使ってプラットフォーム間のKotlinオブジェクト受け渡しを簡単に実現します なおマルチプラットフォームプロジェクトは現在実験的な機能(experimental feature)扱いです。機能自体は安定しておりプロダクションに適用可能ですが、今後のリリースで変更が必要になる可能性があります(マイグレーションツールを提供する場合があります)。 コンパイルパフォーマンス 1.2の開発にあたりコンパイルのパフォーマンスを向上することに多大な努力を費やしました。すでにKotlin 1.1と比較しておよそ25%向上しています。そして1.2.xアップデートにおいて相当な改善を施せる見当がついています。 その他の言語やライブラリの改善 言語や標準ライブラリにも改善を積み重ねています: より簡潔なシンタックス: アノテーションに複数の引数を指定するのが配列リテラルで簡潔になりました lateinit 修飾子のトップレベルプロパティとローカル変数でのサポートと lateinit 変数が初期化されていることのチェック機構 より賢いスマートキャストと改善された型推論 … Continue reading

Posted in Kotlin | Leave a comment

Kotlin on Android、オフィシャルに

本日、Google I/OのキーノートにてAndroidチームはKotlinの公式サポートを発表いたしました。これはKotlinにとって大きな一歩であり、Androidデベロッパにとって、そしてJetBrainsツールファンにとって素晴らしいニュースです。 Androidデベロッパにとって、Kotlinサポートはモダンでパワフルな言語を利用するチャンスです。良くある頭痛の種を解消したり、コードを簡潔・明快にするのに役立つことでしょう。Kotlinをはじめるのは簡単です。既存のプロジェクトに少しずつ導入していくことも可能です。皆様がこれまで培ったスキルや投資を引き続き活かすことができます! 本日より、Android Studio 3.0はKotlinを最初から同梱します。つまりAndroidデベロッパは互換性について心配する必要がなくなります。今後JetBrainsもGoogleもKotlinでのAndroidアプリケーション開発をサポートしていきますのでご安心ください。 Kotlinの他のプラットフォーム(サーバ、デスクトップにおけるKotlin/JVM、Kotlin/JS、Kotlin/Native)におけるサポートについてもJetBrainsにとって引き続きフォーカスしていきますのでご安心ください。JetBrainsのKotlinにおけるビジョンは、この言語を様々なアプリケーションをマルチプラットフォームで、エンドトゥーエンドに繋げる統一ツールにすることです。これはフルスタックWebアプリケーションも、Androidも、iOSクライアとも、組み込み/IoTも含みます。 プログラミング言語は人間の言語と同じです。つまり話す人が多ければ多いほど良くなります。Androidでの公式サポートで、より多くのデベロッパがKotlinを使うことになるでしょう。そしてJetBrainsはKotlinコミュニティが急速に広がっていくと期待しています。Kotlinによる、またはKotlin向けのライブラリやツール開発が加速し、経験が共有され、Kotlinを使う職が増え、学習教材がたくさん公開されていくことでしょう。Kotlinのエコシステムがより盛り上がっていくことを楽しみにしています! JetBrainsはGoogleとのパートナーシップで、非営利のKotlinの財団の設立を予定しています。言語開発は引き続きJetBrainsが支援していき、40人いるJetBrainsで二番目に大きいKotlinチームはこれまで通り活動して参ります。Andrey Breslavが引き続きリード言語デザイナーを務め、Kotlinはこれまでと同じ原則をもとに開発が続けられます。JetBrainsはKotlinのデザインプロセスを今後もオープンなものにし続けます。皆様のフィードバックこそKotlinを正しい方向に導くのに必要不可欠だからです。 Google I/Oにご参加の皆様は、Kotlinのセッションスケジュールをご確認ください。そしてもちろん、サンフランシスコで11月に開催されるKotlinConfへの参加登録をお忘れなく! 素晴らしいイベントになるはずです! A Big Thank You! Kotlinの旅 の始まりは6年前に遡ります。JetBrainsの狙いは我々のツール群同じ志を持つ言語を作ることでした。つまりデベロッパがめんどくさくて、無駄な面倒をしなくて済み、真に重要なことにフォーカスできる言語を作ることです。そしてもちろん、プロセスは可能な限り楽しくなくてはいけません。 JetBrainsはGoogleとAndroidチームがKotlinを信頼してくれたことに感謝いたします。そしてそれ以上にコミュニティに、ユーザーへの感謝の気持ちでいっぱいです。皆様方なしには今日のKotlinは有り得ません。この旅路を共に出来てありがたく思うとともに、今後のエキサイティングな道のりを共に歩めればと思います。 よくある質問と答え このアナウンスについて頂くであろう質問と答えを用意いたしました。もし、ここでカバーされていない質問がございましたらお気軽にコメントを寄せてください。Kotlinについて馴染みでない方はWebサイトのFAQもご覧ください。 Kotlinの一番の重心はAndroidになるのですか? Kotlinのゴールの1つに、マルチプラットフォーム言語であることがあり、これは今後も変わりありません。今後も積極的にKotlin/JVM (サーバサイド、デスクトップなど)、Kotlin/JSも開発して参ります。またmacOS、iOS、IoT/組み込みシステム向けにKotlin/Nativeも開発しています。 Kotlinのリリースサイクルに影響はありますか? Kotlinは引き続きAndroidまたはAndroid Studioとは独立のリリースサイクルを持ちます。Kotlinプロジェクトは完全に独立であり続けます。そしてもちろんKotlinチームとAndroid Studioチームは密なコラボレートしていきます。 Android Studio pluginは誰が開発しますか? JetBrainsがAndroid Studioチームと密接に働きながらAndroid Studio pluginを引き続き開発していきます。 これはIntelliJ IDEA、Eclipse、Netbeansサポートに影響ありますか? いいえ。Kotlinはマルチプラットフォームを目指しており、これまで通り他のIDEもサポートしていきます。もちろんコミュニティの貢献と共にIntelliJ IDEAを協調していきます。 macOS、iOSサポートに影響はありますか? … Continue reading

Posted in Kotlin, お知らせ | Leave a comment

Kotlin 1.1 リリース – JavaScriptサポート、コルーチン(coroutine)等々

本日Kotlin 1.1をリリースいたしました。これはKotlinの大きな前進になります。 Kotlin 1.1の新機能 Kotlin 1.1には数多くの言語機能の改善が含まれています。JavaScriptサポートとコルーチンは中でも大きなハイライトになります。他はタイプエイリアス、bound callable references、lambdaのdestructuringにも注目してください。新しい機能の一覧はWhat’s new ページよりご確認いただけます。(実行可能なサンプルコードを是非お試しください!)。 JavaScriptサポート Kotlinは真のフルスタック言語となることを目指しています 。Kotlin 1.1をもって言語の全機能はJVM / Android並びにJavaScriptで動作するようになりました。(JavaScriptでReflectionはご利用いただけませんが、動作するよう計画はしています。)つまり、Webアプリケーションは全てKotlinで書くことができるようになったということです。JetBrains内ではすでに知見を蓄積しつつあります。Kotlinでフルスタックを書くことについて、チュートリアルなどの資料を今後公開していく予定です。 Kotlin for JavaScriptはダイナミックタイプによって「ネイティブのJavaScript」と相互運用が可能です。またDefinitelyTyped のタイプヘッダを使って著名なライブラリを型安全に利用できます。 詳しくはドキュメント(英語)をご覧ください。 コルーチン(Coroutines) Kotilnのコルーチンを使うとノンブロッキングで非同期なコードを、プレーンで同期的なコードと同じくらいストレートに表現することが出来ます。 非同期プログラミングは大きな注目を集めていますが、ただひとつノンブロッキングコードへの移行を難しくしているのはそれがシステムに無視できない複雑さをもたらしてしまうことです。Kotlinはバージョン1.1でコルーチンを第一級市民として取り扱い、関数のサスペンドを可能にすることでこの複雑さを抑制します。コンピュテーションの表現である関数(またはラムダ)はスレッドをブロックすることなくサスペンドさせることができ、またあとで再開させられます。 技術的にはコルーチンはライトウェイトな協調マルチタスキング(ファイバーと非常に良く似ており、起動と維持、サスペンドコストがほぼかかりません)で、簡単に組み立て、カスタマイズが可能です。 JetBrainsはフレキシビリティを最大化するようコルーチンを設計しており、言語としてはわずかな仕様だけで、大部分はライブラリとして実現されています。kotlinx.coroutinesプロジェクトはRx、CompletableFuture、NIO、JavaFx、Swingを基盤としたライブラリを提供しています。似たようなライブラリはAndroidやJavaScript向けにも書けます。C#のasync/await、Pythonのgenerators/yield、Goのchannels/selectといった機能もKotlinのライブラリとして表現できます。:

詳しくはドキュメント(英語)をご覧ください。 重要なお知らせ: Kotlinのコルーチンは様々なメリットをもたらしますが、とても新しいデザインですのでとりわけ100%正しくて完成していると確信をもたらすに十分なテストが必要です。よってこの機能は実験的な機能としてオプトインフラグ(-Xcoroutines=enable)で有効化される形になっています。大幅な言語仕様の変更はない見込みですが、Kotlin 1.2で幾分APIの調整が入る可能性はあります。 ツールセット Kotlin 1.1はKotlinのツールセットにおいてメジャーリリースではありません。ツール機能が言語のリリース自体に影響を与えるべきではないと考えております。Kolin 1.0.xからは主に: メジャーIDE向けのKotlinプラグイン: IntelliJ IDEA、Android Studio、Eclipse、そしてNetBeans IntelliJ IDEAとGradleでインクリメンタルコンパイル Spring、JPA、Mockitoのコンパイラプラグイン(クラスをopenにして、引数無しコンストラクタを生成) kaptのアノテーションプロセッシング … Continue reading

Posted in Kotlin, お知らせ | Leave a comment

Android向けKotlinのロードマップ

Googleが最近アナウンスした中で最も興味深いニュースはJackコンパイラによりAndroidNでJava8を(限定的に)サポートするという話ではないでしょうか。当然ながら皆様はこれがKotlinのAndroid開発向けのロードマップにどう影響するか興味のあることと思いますのでここで説明させてください。 KotlinのAndroid向けのロードマップ JetBrainsではKotlinがAndroid開発で優れたツールとなるよう多大な注目を置いています。今後いくつかのバージョン1.0.Xにおけるリリースでは引き続きツール群やライブラリの改善を施していきます。フォーカスは三つのエリアに渡っています。開発ワークフローのスピードアップ、ランタイムライブラリのサイズ削減、ツールサポートの充実化です。 開発ワークフロー 開発ワークフローの高速化のため、KotlinのGradleプラグインはインクリメンタルコンパイルをサポートするようになります。ソースに変更があった場合、モジュール全体ではなく本当に影響のある箇所だけを再コンパイルするためビルド時間を大幅に短縮できます。 続いてAndroidのビルドパフォーマンス改善のためAndroidの新しいJack and Jillツールチェインとのインテグレーションを提供します。 現在のところKotlinの生成するバイトコードのハンドルを妨げる問題(196084 と 203531)がありますが、Googleのチームと連携して問題を解決するか、JetBrainsサイドにて回避策を提供する予定です。それが完了したら、インクリメンタルコンパイル中に変更のあったクラスファイルのみJillを使ってトランスレート出来るようになります。(なおこれまでAndroidサポートでは毎回全てのクラスをトランスレートする必要がありました)。 そしてインスタントランです。現在のところKotlinではコールドスワップしかできず、ウォームとホットスワップをサポートするためにもうしばらく調査が必要です。しかし早急に可能な限りを尽くします。それまでの間、JRebel for Androidを使えばKotlinのホットスワップを行うことが可能です。 ランタイムサイズ メソッド数を削減してkotlin-stdlibのサイズを縮めるべく、いくらかの改善を施す計画があります。現在のところ7191です: 複数ファイルに渡るファサードクラスのトップレベルファンクションの最適化や、inline-onlyの関数をランタイムバイナリから外すとで数千のメソッド数を削減できる見込みです。 ツールサポート Kotlin 1.0のAndroidサポートで欠けているものの内一番大きいのがLintチェックでしょう。でもご安心ください。もちろんKotlinのLintチェックのリリース予定があります。既にAndroid Studio 1.5でLintチェックができるよう実装済みで、Kotlin 1.0.2でリリース予定です。そしてAndroid Studio 2.0向けについては現在実装中です。LintチェックはKotlinとJavaコードの共通基盤上に実装しており、今後Android SDKがデフォルトの状態でKotlinサポートできるようこの基盤をAndroid SDKへコントリビュートする予定です。 Android特有のIDEサポート、例えば”New Kotlin Activity”アクション、コードインサイトやナビゲーションなどは少しずつ1.0.xリリースで加えられていきます。 KotlinとJava 8 Java 8がリリースされてしばらく経過しておりますが、Android開発を行っていない開発者でもJava 8よりもKotlinを選択して楽しんでいらっしゃる方々が沢山いらっしゃいあす。Androidが正式にJava8の言語機能をサポートしましたが、KotlinとJavaの選択にどう影響を与えるでしょうか? まず第一に、Java 8のラムダをAndroidにもたらしますが、Androidのツールチェインがサポートするラムダの既存プラットフォーム(Nリリース以前)サポートはKotlinによるサポートとは重要な違いがあります。違いを理解するため、シンプルなコード例をお見せします: Kotlin: list.forEach { process(it) … Continue reading

Posted in Kotlin | Leave a comment

Kotlin Educational プラグイン

Kotlinは習得が簡単だと常々申し上げてきました。実際簡単なのですが、言語の分かりやすさだけでなく、学習素材も重要です。この点について新しいステップを踏み出しました。Kotlin Educationalプラグインです。 Kotlin Educationは IntelliJ IDEA 2016.1用のプラグインで、名前の通りトレーニングコースを提供します。一つのコースにはいくつものタスクがあり、それぞれのタスクには空欄があり、問題解決のために皆様に穴埋めをしていってもらいます。 現在のところ、コースはひとつだけあります。有名なKotlin Koansです。すでにオンラインでも利用可能なもので、Kotlin初学者に大変人気です。オフラインバージョンのKoansもにたようなものですが、もちろんIntelliJ IDEAのリファクタリングやインテンションアクションを活用しながら学ぶことができます! Kotlin Koansについて質問が何か質問がございましたら、Slackの#koans チャンネルへどうぞ。 P.S. あなた自身でコースを作りたい場合はメールにて直接ご連絡ください。 [原文]

Posted in Kotlin | Leave a comment

Kotlin 1.0.1 EAP!

Kotlin 1.0をリリースしてから1ヶ月になります。最初のバグフィックスアップデートを準備する間、ユーザーベースはおよそ2倍となりました。 Kotlin 1.0.1は言語(や、Kotlinプロジェクト全体)のバグフィクスやパフォーマンス改善や、ツール/インテグレーション周りの新機能をリリースする1.0.Xバージョンの最初のリリースになります。今回はIDE機能の細かな改善にとどまりますが、1.0.2以降ではもっと便利な新機能が搭載されていく予定ですので楽しみにしてください。 1.0.1の変更点 全ての変更内容についてはリリースノートをご覧ください。中でも特筆すべき数字やハイライトを以下に挙げます: コンパイラ、ライブラリ、Gradleプラグインの47に渡る修正、パフォーマンス改善 Gradle 2.12との互換性 IDE機能: IDEA 2016との互換性 Kotlin Education Plugin (IDEA 2016向け) KT-9752 “Move declaration to another file”でより便利なファイルチューザー KT-9697 メソッドをコンパニオンオブジェクトへ、または逆への移動 IDE周りの39におよぶ修正 是非EAPをお試し頂き、フィードバックを頂ければ幸いです。皆さんでKotlinをよりよいものにしていきましょう!

Posted in Kotlin | Leave a comment

Kotlin 1.0 リリース: JVMとAndroid向けの実用的(Pragmatic)言語

Kotlinバージョン1.0をついにリリースいたしました! 長く、エキサイティングな道のりでしたが、ついに1.0のリリースとなりました。ロゴも新しくなりました: See discussions on Reddit and Hacker News   Kotlin #とは? KotlinはJVMとAndroid向けのオブジェクト指向かつ関数型な実用的(Pragmatic)言語です。相互運用性、安全性、明瞭性、そしてツールサポートにフォーカスしています。 汎用言語であるKotlinはJavaが動作する場所であればサーバサイドアプリケーション、モバイルアプリケーション(Android)、デスクトップアプリケーションを含むどこでも動作します。以下のメジャーなツールやサービスに対応しています: IntelliJ IDEA、Android Studio、Eclipse Maven、Gradle、Ant Spring Boot (KotlinサポートがKotlin 1.0と同時にリリースされました!) GitHub、Slack、Minecraft Kotlinの焦点として大事なのが相互運用性、JavaとKotlinをミックスしたプロジェクトのシームレスなサポートです。これにより、既存プロジェクトを段階的に簡潔かつよりタイプセーフなコードに移行していくことが可能です。さらに、Kotlinは拡張可能な標準ライブラリを備えており、バイトコードのフットプリントを小さく抑えます。もちろん、どんなJavaライブラリもKotlinから呼び出せますし、逆も然りです。 実用的(Pragmatic) #とは? 長きに渡るプロジェクトでは人のコアバリューを理解することが非常に大切です。Kotlinのデザインを一言で表すならば実用主義(pragmatism)です。Kotlinの主眼は早い段階から新発明や、研究ではありませんでした。結果的に沢山の発明がありましたが、あくまでプロジェクトのポイントではありません。我々が開発してきた物はだれもが利用可能なバグを防ぐための型システムであったり、コードの再利用を促す抽象化メカニズムです。我々はこの言語を素晴らしい物とすべく常にユースケースにフォーカスしてきました。 特に、既存コードとの相互運用性は重要です。全てをスクラッチから書き直すことをだれが望むでしょう?私にもそんなことをしたいと思ったことがありました・・・極めて稀ですが。Kotlinの開発はJavaとの相互運用性やMavenインテグレーション、Android互換性を無視すれば極めて簡単なものだったでしょう。アプローチもよりエレガントになったかもしれません。しかし、エレガントであることはゴールではありません。ゴールは便利(useful)であることです。新しく覚えること、新しく発明すること、スクラッチから繰り返すことが少ないほど、再利用はしやすく、より便利ツールとなり得ます。 Q. なぜKotlinは独自のパッケージマネージャーやビルドシステムを持たないのですか? A. すでにMavenやGradleがあり、多大な既存資産を再利用できることは多くのプロジェクトで重要だからです。 Q. 新しくデザインし直すことをせず、なぜJDK互換のコレクションインターフェースを開発することに注力したのですか? A. 既存のJavaコードはJDKのコレクションフレームワークに多大に依存しており、言語の境界をまたがる際に変換をするのは面倒だからです。 Q. なぜKotlinはJava6のバイトコードをサポートするのですか? A. 多くの人はいまだにJava6を使っているからです(Androidデベロッパが多いですが、Androidだけではありません). … Continue reading

Posted in Kotlin, お知らせ | Leave a comment

Kotlin – Gradle Daemonサポートによるコンパイル高速化

Kotlinのチームはコンパイル時間改善の作業を続けています。Kotlin 0.12.1230ではGradle Daemon機能を使うようになりましたのでお試しください。起動コストがなくなりし、ビルドが早くなります。 バックグラウンド kotlincの実行時間の中でも、コンパイラのクラスをロードし、ウォームアップする時間は特に掛かります。そこでコンパイラインスタンスを繰り返し使い回して最適化するという方法にたどり着きました。 他のJVMベースのツールも同様の問題があるためGradleはクラスロード時間やJITコンパイル時間を不要にするためのロングランニングプロセス – Daemon機能があります。 お試しください KotlinのコンパイラでGrade Daemonがうまく使えない問題を解決しました。Gradle 2.4以上安定して動作するはずです(Gradleのアップグレード方法について詳しくはこちらをご覧ください)。Android Studioはデフォルトでデーモンを使いますので単にbuild.gradeファイル内でKotlinのバージョンとして“0.12.1230″を指定すれば有効になります:

注: 高速化の恩恵を最大限に受けられるのはビルドを数回行ってからになります。最初はコールド状態からのスタートとなり、二回目でほとんどのウォームアップが完了します。それ以降のビルドではJITコンパイラによる最適化で少し早くなります。 フィードバック プロジェクトのビルドがどれくらい早くなったのか(行数と実際のビルド時間など)をお知らせ頂ければ幸いです。 原文

Posted in Kotlin | Leave a comment

IntelliJ IDEA 15 EAP + Kotlin = 愛

IntelliJ IDEA 15 EAPの新しいビルドをリリースしました。毎回新しい機能追加や、バグ修正を行っていきますので、是非フィードバックを掲示板やYouTrackへお寄せください。 新しいビルドではKotlinプラグインをバンドルしています: Kotlin blogに書いている通り、Kotlinのチームは年内に正式リリースをすべく開発を進めております。Kotlinをまだお試しでなければ、この新しいビルドをダウンロードして是非お試しください。基本的な文法はこちら(英語)で確認していただけます。他にも日本語のブログ記事やアドベントカレンダー、雑誌の連載を書いていらっしゃる方も多くいらっしゃいますのであわせてご参照ください。 他に注目すべき改善点は、Find / Replaceにおける正規表現のcase transformation文法のサポートです: “\l”、 “\L”、 “\u”、 “\U”、“\E”をサポートしています。これらの文法に馴染みがない方はPerlのドキュメントをご参照ください。 変更内容の一覧はリリースノートにてご確認いただけます。 Develop with Pleasure! 原文

Posted in IntelliJ IDEA, Kotlin | Leave a comment

Kotlin M6.1リリース

二ヶ月前にM6をリリースしました。そして今日、沢山の改善を含む次のステップへと移る準備ができました。 言語の改善 言語の新機能や改善が施されました より良いインターフェース タイプインターフェースにはスマートキャストが働きます。以下のコードが期待通り動作します:

より良いキャスティング診断 コンパイラは賢くなり、不可能なキャストを検出します

、といったコードはコンパイル時にエラーを出します。 特定のケースでは生のタイプへのキャストは推論が働きます

さらに、else句はwhen節内で返値に関連がない場合は不要となりました。つまり、これはステートメントとして利用できます:

警告の抑止 任意の宣言や式にsuppressアノテーションをつけて(Cmd+Enterを押せばIntelliJ IDEAがやってくれます)、コンパイラの出す警告を抑止させることができます。未チェックキャストやリネームされたパラメータを含むいかなる警告に対して利用できます。

ローカルリターンを名前付きラムダ式で 混乱を防ぐため、純粋なreturnは「名前付き関数からの戻り」と認識されます。つまりラムダ式内で”return x”と表記してそのラムダがxを返すという書き方は認められないことになります。この制約を和らげるため、本リリースより「ラムダ式内のラベル付きリターン」を書くことができるようになりました。たとえばfooという名前の関数があった場合

この関数を呼び出す際にラムダ式を渡して条件を確認して早期に戻すというコードが書けます

この定義内で明示的なラベリングは必須ではありません。以下のように書くことも出来ます:

ラムダ式が関数に渡されたときは自動的にラベル付きとなります。 注意:ラムダ式内の明示的なリターンタイプは一時的に必要なもので、将来的に不要になる予定です 警告: メタデータフォーマットの変更 生成するバイトコードは以前とは大きく異なります。サイズはよりスリムになり、リフレクションは高速になりました。ただし以前のバージョンのKotlinでコンパイルしたバイトコードとは互換性がありません。 JavaScriptサポート KotlinのJavaScriptサポートを利用して成功を収めている商用製品がある傍ら、JetBrainsは現在のところJVM向けにフォーカスしてきました。しかし、現在はJavaScriptサポートに全力を注いでおり今回のリリースで以下の機能を含めました: Support for enums Class Objects Delegated properties … Continue reading

Posted in Kotlin | Leave a comment