SwiftとKotlinとで気になる違い
SwiftとKotlinとはよく似ているのでロジックを共通化させるためにiOSとAndroidのプログラミング言語として採用することにした。
もちろん、違いもあるわけで、その中ので気になったものを上げていこうと思った。
代入がexpressionかstatementか
つまりif文の条件などに利用できるかということである。
代入がexpressionであれば条件として利用でき、statementなら利用できない。
これは
Swift: Expression
代入を条件として利用可能:特にOptionalで多用する。
Kotlin: Statement
代入を条件として利用できない。
のようになっているので気をつけなくてはならない。代わりと行ってはなんだがNullable属性を持つものを使ってOptional的な使い方ができる。これについてはまた項を改めて書く。
Swift: var-let, Kotlin: var-valの関係
これは微妙なことだ。
SwiftでもKotlinでもvarなら変数、mutableという意味で変わらない。これは問題ない。
Swiftのletは定数でありimmutableなオブジェクトを指す。
一方でKのvalはimmutableではなくてread onlyのオブジェクトを指す。これはJavaにおけるfinal変数と同じである1。
つまりオブジェクト自体の変更はできないがインスタンスのメンバー変数は後で変更ができると言うことである。
これに対応してかKotlinのCollectionにはMutableSetのようにMutableを指定したものがある。
設計時には注意しておく必要がある。
- Programming Kotlin, Stephen Samuel, Stefan Bocutiu, 2017 Packt Publishing (p.30) ↩︎