开始
程序员文章站
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
}
推荐阅读
-
steam提示开始游戏失败,平台无效怎么办?解决steam平台无效的方法
-
Cocos2dx3.2从零开始【三】继续Cocos2dx3.2的学习
-
了解了这些才能开始发挥jQuery的威力_jquery
-
React如何操作?react从零开始的制作一个案例的全过程
-
一个流量并发很高的项目,优化是从什么时候开始的?
-
html5中设置或返回音视频是否在加载后即开始播放的属性autoplay
-
在ExtJS2.0中使用datefield编写开始/结束时间组件
-
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
-
任务栏与开始菜单技巧
-
三星:可折叠手机只是创新的开始 将继续推动可能性的极限