Kotlin常用用法事例(一)

来源于《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'

你可能感兴趣的:(Kotlin常用用法事例(一))