If you have used Swift for iOS development, chances are that you really miss its flexibility when developing for Android with Java. Kotlin brings all the Swift goodness to Java that combines OO and functional features and is focused on interoperability, safety, clarity and tooling support. Let’s see a few Swift constructs and their equivalent on Kotlin:
In Swift, we unwrap with guard let
guard let unwrapped = wrapped else {
return
}
In Kotlin, we use the elvis operator
val unwrapped = wrapped ?: return
In Swift, we can reference parameters without specifying the complete signature using $0, $1, …
let doubleNumbers = numbers.map { $0 * 2 }
In Kotlin, we use it
val doubleNumbers = numbers.map { it * 2 }
Swift uses named parameters
addNumber(1, with: 2) // Call with named parameters
func addNumber(number: Int, with: Int) {
return number + with
}
Kotlin has named parameters too
addNumber(1, with = 2) // Call with named parameters
fun addNumber(number: Int, with: Int): Int = number + with
We define computed properties with (optional) getter in Swift
var name: String {
return "\(firstName) \(lastName)"
}
Computed properties defined with get in Kotlin
val name: String
get() {
return "$firstName $lastName"
}
Or even smaller with =
syntax
val name: String
get() = "$firstName $lastName"
We write string templates like "\(firstName) \(lastName)"
in Swift and "$firstName $lastName"
in Kotlin