Kotlin ver 1.3-M1が出ました。
See what’s coming in Kotlin 1.3-M1
https://blog.jetbrains.com/kotlin/2018/07/see-whats-coming-in-kotlin-1-3-m1/
毎回アップデートがあるたびに変更内容を眺めてはいるのだけど、
今回は久しぶりに面白いバージョンアップだなあと思いました!
- Coroutinesが安定化しました(experimentalじゃなくなりました)
- when構文で、変数を良い感じに使えるようになりました
- Functionが255まで使えるようになった
- SuccessOrFailureってのが増えたけど関数の戻り値にしちゃダメよ
- unsignedが実験的に導入されました
- プラットフォームごとのランダム値生成対応
など。
そして今回もshirajiさんみたいにKotlinへコミットしてる日本の方もいて良いですねー。
https://github.com/t-kameyama
多分日本の方?だと思う。
Coroutines
Coroutinesに関しては、hadiさん曰く、
「experimentalって言ってるけど、実はもう安定してるんだよ?」って感じだったらしいです。
そして、今回オフィシャルにexperimentalが外れた形みたいです。
ってことで今は新しい安定したCoroutinesへの移行期間で、1.2のCoroutinesを使ってた人は移行しないとダメみたいですね。パッケージ変更やクラスがちょこっと変わっているみたいです。
Capturing when subject in a variable
これ、地味に良くて。今までNGだったこういうのが出来るようになると。
fun main(args: Array<String>) { val hoge = Hoge("hagehage") val res = when(val hage = hoge.toStr()) { "hage" -> "hage" "hagehage" -> "hage" else -> "else" } println(res) } class Hoge(val value : String) { fun toStr() = value }
when(val hage = hoge.toStr()) というのが今まで出来なかったのですね。
Functionが255まで使えるようになった
個人的にツボでしたw
KotlinではScalaと同様FunctionN が0から22まであるんですけど、
22以降も使えるようになったと。
でもKotlinではFunction255まで使えるんだぜ(ドヤッ)ってジョークに使えそうですね。
そうですね、平和にいきましょう。
cf) https://stackoverflow.com/questions/4152223/why-are-scala-functions-limited-to-22-parameters
んでまぁ、今さらFunction255まで定義したのかなぁ、、ははって思ってたら
こういうことらしいですね。
https://github.com/JetBrains/kotlin/blob/master/spec-docs/function-types.md#functions-with-more-than-22-parameters-at-runtime
package kotlin.jvm.functions interface FunctionN<out R> : kotlin.Function<R> { val arity: Int fun invokeVararg(vararg p: Any?): R } annotation class arity(val value: Int)
で、@arity(42) FunctionNって書けばFunction42の実装がコンパイルされるということみたいです。
まぁ、これって、使う側はlambda式で書いてたら気にする部分ではないんですけど、結構思い切ったなあっていうか。アノテーション好きだなぁという気持ちになりました。
仕組み的には255以上の関数も出来ますけど、Javaの引数の限界的なアレですね。
unsignedとランダム値生成
このあたりはおそらくマルチプラットフォームを意識した対応なのかな??とかそんな感じがしますが、
UInt, ULong, UByte, UShortって型が出来たみたいですね(experimental)。
unsingedの数値リテラルとかも増えてて、1.3のタイミングでこういうの増えちゃうのかー、おもしろー。ってところではあります。
Javaではないっちゃないんですけどね、unsinged。
ひしだまさんのメモ見ると、unsigned表現のString変換は増えてて、ヘーっとか思いました。
http://www.ne.jp/asahi/hishidama/home/tech/java/type.html
内部的にどういう風に保持するんだろう。もはや、JVMだけがターゲットではないですが、気が向いたらjavapしたいところです。
まとめ
- 1.3にしては結構面白い変更が入ってて面白い(小学生並みの感想)
- 互換性とかは一応気にしてバージョンアップしてるようなので「バージョンアップしたらいきなりぶっ壊れる」とかは心配しないで良いとは思います。ただしバージョンアップの案内に従った方が良いです。普段Kotlin使ってる方としては、これまで通りKotlinと付き合えば良いという感じです。
0 件のコメント:
コメントを投稿