来源于《Kotlin实战》中一些自己记录的常用用法
类与属性
字符串模板
fun main(args:Array){
println("Hello ${if(args.size > 0) args[0] else "zero~~ "}")
}
//如果没有传入参数的话 输出 zero~~
Kotlin中的Bean
//Java
public class Person{
private final String name;
//getter...
//setter...
}
//Kotlin 称为值对象
class Person(val name:String)
kotlin中val
为只读属性 (生成一个字段和一个getter) val
为可写属性(生成一个字段、一个getter 和一个setter)
自定义访问器
class Rectangle(val height:Int,val width:Int){
val isSquare:Boolean
get(){
return height == width
} //自定义getter
}
//调用
val rect = Rectangle(40,40)
println(rect.isSquare)
//输出:true
声明枚举类型
enum class Color{ RED,ORANGE,BLUE,GREEN}
//声明带属性的枚举类型
enum class Color(val r:Int,val g:Int,val b:Int){
RED(255,0,0),ORANGE(255,165,0)
fun rgb = (r*256+g) *256 +b
}
//输出
println(Color.RED.rgb())
在一个when分支上合并多个选项
enum class Color {
RED, ORANGE, YELLOW, GREEN, BLUE, INDIGO, VIOLET
}
fun getWarmth(color: Color) = when(color) {
Color.RED, Color.ORANGE, Color.YELLOW -> "warm"
Color.GREEN -> "neutral"
Color.BLUE, Color.INDIGO, Color.VIOLET -> "cold"
}
fun main(args: Array) {
println(getWarmth(Color.ORANGE))
}
//输出:warm
在"when"中使用任意对象
setOf() 创建出一个Set
fun mix(c1: Color, c2: Color) =
when (setOf(c1, c2)) {
setOf(RED, YELLOW) -> ORANGE
setOf(YELLOW, BLUE) -> GREEN
setOf(BLUE, VIOLET) -> INDIGO
else -> throw Exception("Dirty color")
}
fun main(args: Array) {
println(mix(BLUE, YELLOW))
}
Kotlin中的is
使用is 判断某个变量是否是某个类型
使用as进行特定类型的显式转换
Kotlin中的迭代
for(i in 100 downTo 1 step 2){
println("log")
}
//打印5行log
for(i in 1..10){
println("log")
}
fun main(args: Array) {
var list = arrayListOf("1","2","3")
for((index,element) in list.withIndex()){
println("$index:$element")
}
}
//0:1
//1:2
//2:3
使用in检查集合和区间
fun isLetter(c:Char) = c in 'a'..'z' || c in 'A'..'Z'