基础


包定义

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) }

文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录