参考官方文档:https://developer.android.google.cn/kotlin/learn?hl=zh-cn
Kotlin 使用两个不同的关键字(即 val 和 var)来声明变量。
// 可变变量
var count: Int = 10
count = 15
// 不可变变量
val name = "kotlin"
name = "java" // 报错
val languageName= "kotlin"
val upperCaseName = languageName.toUpperCase()
// Fails to compile
languageName.inc()
// name 的类型为 String,不可为 null,会编译错误
val name: String = null
// 若要赋 null 值,需加 ? 符号
val name: String? = null
if (count == 42) {
println("I have the answer.")
} else {
println("The answer eludes me.")
}
if (count == 42) {
println("I have the answer.")
} else if (count > 35) {
println("The answer is close.")
} else {
println("The answer eludes me.")
}
val answerString: String = if (count == 42) {
"I have the answer."
} else if (count > 35) {
"The answer is close."
} else {
"The answer eludes me."
}
println(answerString)
val answerString = when {
count == 42 -> "I have the answer."
count > 35 -> "The answer is close."
else -> "The answer eludes me."
}
val languageName: String? = null
if (languageName != null) {
// No need to write languageName?.toUpperCase()
println(languageName.toUpperCase())
}
fun getName(type: Int): String {
// 函数体内容
}
fun generateAnswerString(countThreshold: Int): String {
return if (count > countThreshold) {
"I have the answer."
} else {
"The answer eludes me."
}
}
fun generateAnswerString(countThreshold: Int): String = if (count > countThreshold) {
"I have the answer"
} else {
"The answer eludes me"
}
val stringLengthFunc: (String) -> Int = { input ->
input.length
}
val stringLength: Int = stringLengthFunc("Android")
fun stringMapper(str: String, mapper: (String) -> Int): Int {
// Invoke function
return mapper(str)
}
stringMapper("Android") { input ->
input.length
}
使用 class 关键字可以定义类。
class Car {
val wheels = listOf<Wheel>()
}
val car = Car() // construct a Car
val wheels = car.wheels // retrieve the wheels value from the Car
class Car(val wheels: List<Wheel>)
class Car(val wheels: List<Wheel>) {
private val doorLock: DoorLock = ...
fun unlockDoor(key: Key): Boolean {
// Return true if key is valid for door lock, false otherwise
}
}
class Car(val wheels: List<Wheel>) {
private val doorLock: DoorLock = ...
var gallonsOfFuelInTank: Int = 15
private set
fun unlockDoor(key: Key): Boolean {
// Return true if key is valid for door lock, false otherwise
}
}