Kotlin is a new and quite exciting language for both mobile and backend development. It has many nifty constructs. This is my Kotlin features sheet cheat that I will use whenever I need to switch from another language and to Kotlin. Maybe it can help you too 🙂
// Let's start with a HelloWorld example println("Hello Kotlin!")
Variables
// Immutable variables (only getters are provided) val readonly = 10 // Mutable variables (getters and setters are provided) var mutable = "Hello" mutable = "Hello again" // Explicit typing val student: Student = Student val year: Int = 49 // Implicit typing val student = Student val year = 42 // Variable destruction val (model, color, price) = car println("I have a $color $model that set me back $price SEK") // Ex. "I have a red S60 that set me back 250 000 SEK"
String concatenation
// 'In string' concatenation println("My daughter is $readonly years of age") // Ex. "My daughter is 10 yeas of age" // 'In string' concatenation with string functions println("In ten years my daughter will be ${readonly.plus(10)}") // Ex. "In ten years my daughter will be 20"
Switch statement
// Kotlin switch var x = 23 when (x) { in 1..10 -> println("x is between 1 and 10") !in 10..20 -> println("x is not between 1 and 10") else -> println("default branch") }
NULL
// Mark variables that can be null val name: String = "Niklas" var work: String? = "Goverment" name = null // NOT allowed work = null // Allowed
Spread operator
// Spread operator val subscriptions = arrayOf("subscription a", "subscription b") val hardware = arrayOf("iPhone 12", "iPhone X") val shoppingCart = arrayOf(*subscriptions, *hardware) // shoppingCart: // ["subscription a", "subscription b", "iPhone 12", "iPhone X"]
Range
// Range operator for (x in 1..10) { println(x) } // 12345678910
Pair
// Pair object val hands = "Left" to "Right" println(hands.first) // "Left" println(hands.second) // "Right"
Check variable type
val model = "Volvo" val price = 123000.50 val cars: List<any> = listOf(model, price) for(car in cars) { when (car) { is String -> { println("Model: $car") } is Double -> { println("Price: $car") } else -> { println("Not an attribute") } } }
Short function syntax
fun sum(a: Int, b: Int) = a + b println(sum(2, 4)) // 6
Default arguments
fun printWO(productId: Int, amount: Int = 1, by: String = "mail") { println("$amount of $productId by $by") } printWO(123456) // "1 of 123456 by mail" printWO(123456, 10) // "10 of 123456 by mail" printWO(123456, 10, "DHL") // "10 of 123456 by DHL"
Data class
data class Phone(var model: Int, val color: String) val phone = Phone(123456, "Purple") println(phone) // Phone(model=123456, color=Purple) - toString() println(phone.model) // 123456 - Built in getters phone.color = "Blue" // Built in setter println(phone) // Phone(model=123456, color=Blue) val (model, color) = phone // Destructuring data classes
Singelton
object MySingletonClass { init { println("Hello World!") } var name = "I a Singelton" fun printName(){ println(name) } } fun main() { MySingletonClass.printName() // "I a Singelton" }