包定义
package my.demo
import kotlin.text.*
函数
fun sum(a: Int, b: Int): Int {
return a + b
}
注意这里带有两个参数a和b都是int类型,返回的是int类型的数据。注意返回值可以为空,或者Unit这两个都是为空。
我们可以直接把表达式作为函数体
fun sum(a: Int, b: Int) = a + b
变量
常量 val
变量是var
字符串模板
a = 2
// 模板中的任意表达式:
val s2 = "${s1.replace("is", "was")}, but now is $a"
空值检测
当某个变量的值可以为 null 的时候,必须在声明处的类型后添加 ? 来标识该引用可为空
fun parseInt(str: String): Int? {
// ……
}
类型检测
is
运算符检测一个表达式是否某类型的一个实例。 如果一个不可变的局部变量或属性已经判断出为某类型,那么检测后的分支中可以直接当作该类型使用,无需显式转换:
if (obj is String) {
// `obj` 在该条件分支内自动转换成 `String`
return obj.length
}
for循环
val items = listOf("apple", "banana", "kiwifruit")
for (item in items) {
println(item)
}
// 或者下面这个
val items = listOf("apple", "banana", "kiwifruit")
for (index in items.indices) {
println("item at $index is ${items[index]}")
}
when表达式
fun describe(obj: Any): String =
when (obj) {
1 -> "One"
"Hello" -> "Greeting"
is Long -> "Long"
!is String -> "Not a string"
else -> "Unknown"
}
使用区间range
//使用 in 运算符来检测某个数字是否在指定区间内:
val x = 10
val y = 9
if (x in 1..y+1) {
println("fits in range")
}
// 区间迭代
for (x in 1..5) {
print(x)
}
集合
// 迭代集合
for (item in items) {
println(item)
}
// 使用lambda表达式
val fruits = listOf("banana", "avocado", "apple", "kiwifruit")
fruits
.filter { it.startsWith("a") }
.sortedBy { it }
.map { it.toUpperCase() }
.forEach { println(it) }