fun 函数字面量() {
"hello"
12
2.5
println("work")
val printHello = {println("hello")}
println(printHello)
val prinMsg = {msg:String -> println(msg)}
fun prinMsg(msg:String){
println(msg)
}
prinMsg("kotlin 很有趣")
}
fun fibo(total:Int):Int = when(total){
0 -> 1
1 -> 1
else -> fibo(total - 1) + fibo(total -2)
}
fun feibo(n: Int):Int {
tailrec fun fiboatail(index:Int,ant:Int,act:Int):Int=
when(index){
0 -> ant
else ->fiboatail(index - 1,act, ant + act)
}
return fiboatail(n,1,1)
}
//applay函数
fun myApplay(){
//apply
// apply函数
val task = Runnable { println("运行中") }
Thread(task).apply { setDaemon(true) }.start()
val task2 = Runnable { println("running") }
val thread = Thread(task2)
thread.setDaemon(true)
thread.start()
// 12.apply { println(12 + 13) }
//let函数
}
//let函数
fun myLet():Int{
"myLet".let{
println(it)
return 999
}
// return 999
}
//with函数
fun myWith(){
with(ArrayList<String>()){
add("java")
add("kotln")
add("c++")
println("this = " + this)
}.let { println(it) }
}
//run函数
fun myRun(){
ArrayList<String>().run {
add("aaaa")
add("bbbb")
add("cccc")
println(this.joinToString())
}.let { println(it) }
}
//lazy函数
fun myLazy(){
fun requstJson():String="{name age }"
val lazyString = lazy { requstJson() }
val stringResult = lazyString.value
}
//use函数
@RequiresApi(Build.VERSION_CODES.O)
fun myUse(){
val input = Files.newInputStream(Paths.get("f:\\myInformation.txt"))
val byte = input.use {
input.read()
}
}
//repeat函数
fun myRepeat(){
//repeat(times: Int, action: (Int) -> Unit)
repeat(8, {println("执行")})
}
//require函数
fun myRequire(x:Int){
// require(value: Boolean, lazyMessage: () -> Any)
require(x > 0,{"数字必须大于0"})
println(x)
// outputString()
}
//泛型函数
fun <T> outputString(a:T,b:T,c:T):String{
return "$a,$b,$c"
}
fun test(){
val array = arrayOf(1,3,5,-8)
println("最大的数值是: ${array.biggest()}")
}
fun <T> Array<T>.biggest():T where T:Number, T:Comparable<T>{
var biggest = this[0]
for(i in 1..lastIndex){
val e = this[i]
if(e > biggest){
biggest = e
}
}
return biggest
}
//lambda表达式
//语法 {参数1,参数2,参数3,...参数n -> 要执行的语句}
fun add(x:Int,y:Int):Int{
return x + y
}
//val t = add()
var 求和 = {x:Int,y:Int -> x+y}
fun gaojie(a:Int,b:Int,c:(x:Int,y:Int)-> Int){
c(a,b)
}
fun g(){
gaojie(1,2, {x:Int,y:Int -> x+y})
}
Kotlin函数
最新推荐文章于 2024-05-29 20:02:07 发布