Tomo.Log()


Kotlin/Swift 対応表 vol.1

[10/16, 2024]

English / 日本語

こんにちは、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 -> {}
}