1.range表达式

fun main() {var age = 12.3if (age in 0.0..3.3){println("婴幼儿")}else if (age in 4.0..12.2){println("少儿")}else{println("未知")}/*** in 后面还可以接 list set 都可以*/if (age !in 0.0..3.3){println("婴幼儿")}}2.when表达式
val school = "小s学"val level = when (school) {"学前班" -> "幼儿""小学" -> "少年""中学" -> "青年""高中" -> "学生"else -> {println("未知")}}println(level)
3.String模板

4.函数

fun main() {println(doSomething(1, true))}private fun doSomething(age:Int,flag:Boolean):String{return "result $age $flag"
}5.Unit函数

7.Nothing类型

fun main() {println(doSomething(1, true))TODO("nothing")println("after nothing")}private fun doSomething(age:Int,flag:Boolean):String{return "result $age $flag"
}
8.反引号的函数命名

public class MyJava {public static void  is (){System.out.println("is invoked");}public  void  saa (){System.out.println("is invoked");}
}
Kotlin 调用Java
fun main() {MyJava.`is`()MyJava().saa()
}
fun `**~special function with weird name~**`(){}9.匿名函数

fun main() {val total = "Mississippi".count()val total1 = "Mississippi".count { letter -> letter == 's' }println(total)println(total1)
}
10.函数参数
 
 
fun main() {//    val blessingFunction:()->String={
//        "我很牛逼"
//    }
//
//    println(blessingFunction())val blessingFunction ={ name:String,year:Int ->val holiday = "New Year .""$name, Happy $holiday $year"}println(blessingFunction("jack",3))
}11.什么是lambda

12.定义参数是函数的函数
fun main() {val getDiscountWords ={goodsName:String,hours:Int ->val  currentYear =2027"${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"}showOnBoard("卫生纸",getDiscountWords)}//具名函数
fun showOnBoard(goodsName:String,getDiscountWords:(String,Int) ->String){val hours:Int = (1..24).shuffled().last()println(getDiscountWords(goodsName,hours))
}
13.简略写法

fun main() {showOnBoard1("卫生纸"){goodsName:String,hours:Int ->val  currentYear =2027"${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"}
}//具名函数
fun showOnBoard1(goodsName:String,getDiscountWords:(String,Int) ->String){val hours:Int = (1..24).shuffled().last()println(getDiscountWords(goodsName,hours))
}14.函数内联 inline 关键字

fun main() {showOnBoard1("卫生纸"){goodsName:String,hours:Int ->val  currentYear =2027"${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"
}}//具名函数
inline fun showOnBoard1(goodsName:String,getDiscountWords:(String,Int) ->String){val hours:Int = (1..24).shuffled().last()println(getDiscountWords(goodsName,hours))
}15.函数引用

fun main() {showOnBoard2("牙膏",::getDiscountWords)}fun getDiscountWords(goodsName: String,hours:Int):String{val  currentYear =2027return "${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"
}//具名函数
fun showOnBoard2(goodsName:String,getDiscountWords:(String,Int) ->String){val hours:Int = (1..24).shuffled().last()println(getDiscountWords(goodsName,hours))
}16.函数类型作为返回类型

fun main() {val configDiscountWords = configDiscountWords()println(configDiscountWords("Jack"))}fun configDiscountWords():(String)->String{return {goodsName:String ->val  currentYear =2027val hours:Int = (1..24).shuffled().last()"${currentYear}年,双十一${goodsName}促销倒计时:$hours 小时"}
}17.闭包

18.Lambda匿名内部类

都是一种思想,lamdba表达式可以被当作函数参数和返回值传递嘛 在kotlin里

