業務の中で iOS と Android のPRの両方をレビューしていて、Swift と Kotlin とで Type safe な書き方の呼び方が違うよねって話題に上がったので忘備録的な感じで書いています。
呼び方の違い
Swift
Optional
var name: String?
または
var name: Optional<String>
Apple Developer Documentation - Optional
Kotlin
Nullable
(Java の Optional とは別物)
var name: String?
Type safe な書き方の違い
iOS Developper なので Swift ベースで書いています。
Swift での呼び方、書き方はこうだけど、 Kotlin ではこう書くよ的な。
Optional Binding (Swift)
var name: String?
if let aName = name {
print(aName.uppercased())
} else {
print("`name` is nil.")
}
THE SWIFT PROGRAMMING LANGUAGE / The Basics - Optional Binding
Kotlin の場合
呼び方: Checking for null in conditions
(Kotlin に詳しい人はなんて呼んでいるんでしょうね・・・)
var name: String?
if (name != null) {
print(name.toUpperCase())
} else {
print("`name` is null.")
}
KOTLIN PROGRAMMING LANGUAGE / Null Safety - Checking for null in conditions
Optional Chaining (Swift)
var name: String?
let count = name?.count
print(count)
THE SWIFT PROGRAMMING LANGUAGE / Optional Chaining
Kotlin の場合
呼び方: Safe Calls
var name: String?
val length = name?.length
print(length)
KOTLIN PROGRAMMING LANGUAGE / Null Safety - Safe Calls
Forced Unwrapping (Swift)
var name: String?
let count = name!.count
print(count)
THE SWIFT PROGRAMMING LANGUAGE / The Basics - If Statements and Forced Unwrapping
Kotlin の場合
呼び方: !! Operator (Non-null Operator)
※人によっては呼び方が変わってくるかもです
var name: String?
val length = name!!.length
print(length)
KOTLIN PROGRAMMING LANGUAGE / Null Safety - The !! Operator
Nil-Coalescing Operator (Swift)
var name: String?
let aName = name ?? "Swift"
print(aName)
THE SWIFT PROGRAMMING LANGUAGE / Basic Operators - Nil-Coalescing Operator
Kotlin の場合
呼び方: Elvis Operator
var name: String?
val aName = name ?: "Kotlin"
print(aName)