欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

开始

程序员文章站 2022-07-13 08:00:14
...

基本语法
定义包

package my.demo
import java.util.*
//  ...

定义函数

fun sum(a: Int, b: Int): Int {
     return  a + b
}

定义变量
只读局部变量 val 可重新赋值变量 var

注释
和java一样,支持行注释和块注释。
不一样,可嵌套注释

使用字符串模板
$

使用条件表达式

fun maxOf(a: Int, b: Int): Int {
     if (a > b) {
        return a
    } else {
     return b
  }
}

fun maxOf(a: Int, b: Int) = if(a > b) a else b

使用可空值及null检测
当某个变量的值可以为null时,必须在声明处的类型后面添加?标识,否则会编译报错。
使用类型检测及自动类型转换
is运算符检测一个表达式否是某一类型的一个实例,如果一个不可变的局部变量或属性已经判断出为某一类型,则检测后的分支中可以直接当作这个类型使用,不必显示转换:

fun getStringLength(obj: Any): Int? {
      if(obj is String) {
         return obj.length
      }
     return null
}

使用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表达式
when取代了类c的switch操作符。其最简单形式如下:

when(x){
  1  -> print("x==1")
  2  ->print("x==2")
  else   -> {
    print("x is neither 1 nor 2")
  }
}

when也可以取代if-else-if链,如果不提供参数,所有的分支条件都是简单的布尔表达式,而当一个分支的条件为真是则执行该分支:

when {
 x.isOdd()  -> print("x is odd")
 x.isEven() -> print("x is even")
else  -> print("x is funny")
}

使用区间(range)
使用in运算符来检测某个数字是否在制定区间
if(x in 1..y+1){}
if(-1 !in 0..list.lastIndex)
区间迭代 数列迭代

可变数量的参数(Varargs)
函数的参数(通常是最后一个)可以用vararg修饰符标记:

If not null 缩写

val files = File("Test").listFiles()
println(files?.size)

If not null else

val files = File("Test").listFiles()
println(files?.size ?: "empty")

单表达式
单表达式惯用法一起使用能简化代码,例如和when表达式一起使用:

fun transform(color: String): Int = when(color) {
  "Red" -> 0
  "Green" -> 1
  "Blue" -> 2
   else -> throw IlleagalArgumentException("Invalid color param value")
}

对一个对象实例调用多个方法(with)

class Turtle{
  fun pendown()
  fun penup()
  fun forward(degrees: double)
  turn(pixels: double)
}
val myTurtle = Turtle()
with(turtle){  //画一个100像素的矩形
 pendown
 for(i in 1..4){
   forward(100.0)
   turn(90.0)
  }
 penup
}

上一篇: 开始

下一篇: 开始