说明
可能会忍不住说一些C#和Rust相关的事情,但这是个人笔记,允许先入为主,节外生枝。
下文的最优写法只是相对于上下文环境
关键字、语法(糖)
一行代码省略函数体
有点像C#的 属性get函数写法的 =>
fun largerNumber(num1: Int, num2: Int): Int = max(num1, num2)
推导后可省略返回值类型
fun largerNumber(num1: Int, num2: Int) = max(num1, num2)
if可以将每个条件最后一行代码作为返回值
这有点像Rust
fun largerNumber(num1: Int, num2: Int): Int {
return if(num1 > num2) {
num1
} else {
num2
}
}
相对最优写法
fun largerNumber(num1: Int, num2: Int): Int {
return if(num1 > num2) {
num1
} else {
num2
}
}
when
也有点像Rust
匹配值 -> {执行逻辑}
when (num) {
// 判断类型
is Int -> ...
// 判断值
1, 2 -> ...
in 1.. 10 -> ...
// 其它
else -> ...
}
无参写法
when {
name == "王旭林" -> 86
name == "陈惠军" -> 77
name == "黄达" -> 95
name == "周毅" -> 100
else -> 0
}
区间
val range1 = 0..10 // 包含0也包含10
val range2 = 0 until 10 // 包含0 但不包含10
val range3 = 10 downTo 1 // 包含10也包含1
for
for(i in 0 until 10 step2) // 设置步长
面向对象部分
实例化
val p = Person()
open允许继承
open class Person{...} // 该类可以被继承
class Student : Person {...} // Student类继承Person类
主构造函数
感觉就是只能用来初始化一些字段(不考虑init块)
// 写法1
class Student(name: String){
val name: String
init{
this.name = name
}
}
// 写法2
class Student(val name: String){} // 相当于直接定义了 val name: String 更简洁
标签:10,num1,num2,Int,kotlin,安卓,val,必忘,name
From: https://www.cnblogs.com/209jkjkjk/p/18652132