Kotlin/Swift 対応表 vol.1
[10/16, 2024] |
こんにちは、Tomoです。最近、Androidアプリを開発するためにKotlinを勉強しています。KotlinはSwiftに似ていますが、多くの違いもあります。なので、忘れないようにメモを残しておきたいと思います。
このメモは、逆にKotlinユーザーがSwiftを学ぶ場合にも役立つかもしれません。
var / let
Swift
let name:String = "Tomo"
var age:Int = 99
Kotlin
val name:String = "Tomo"
var age:Int = 99
funcはfun
よく間違えてしまうのが、'func' と 'fun'。Kotlinでは'fun'です。
Swift
func createSomething(number:Int) -> Something {}
Kotlin
fun createSomething(number:Int) : Something{}
Computed value (getter / setter)
Swift
var _cache:Int = 10
var number : Int{
get{
return self._cache
}
set(value){
self._cache = value
}
}
Kotlin
var _cache: Int = 10
var number: Int
get() = this._cache
set(value) {
this._cache = value
}
ゲッターのみの場合
Swift
var number : Int{
get{
return 10
}
}
Kotlin
val number: Int
get() = this._cache
Kotlinでgetterのみを定義する場合は、'val'を使う必要があります。癖でvarを使ってしまいエラーを解決するのに時間がかかりました😅
Enum
enum -> enum class
Swift
enum Animal {
case Dog,
case Cat
}
Kotlin
enum class Animal {
Dog, Cat
}
nil は null
Swiftのnilは、Kotlinではnull。(Javaからきてるのかも)。
強制Unwrap
Swift
var optionalValue:Int?
var count = 1 + optionalValue!
Kotlin
var optionalValue:Int?
var count = 1 + optionalValue!!
Kotlin needs two '!!'.
nil/nullに対する三項演算子
Swift
let defaultValue : Int = 0
var count = optionalValue ?? defaultValue
Kotlin
val defaultValue : Int = 0
var count = optionalValue ?: defaultValue
Extension
Swiftのような拡張機能はKotlinにはありませんが、public関数を作成することで同様の効果を得ることができるみたいです。
Swift
extension String {
func newFunction(value:Int){
//do somthing
}
}
Kotlin
fun String.newFunction(value:Int){
//do somthing
}
switch文
Kotlinにはswitch文がないため、'when'文を使用します。
Swift
switch(animal){
case .Dog:break
case .Cat:break
default:break
}
Kotlin
when(animal){
.Dog -> {}
.Cat -> {}
else -> {}
}