网站建设运维标准,为什么点不开网站,区块链网站可以做哪些活动,京东不让卖网站制作么Kotlin 是一门现代但已成熟的编程语言#xff0c;旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作#xff0c;并提供了多种方式在多个平台间复用代码#xff0c;以实现高效编程。
https://play.kotlinlang.org/byExample/01_introduction/02_Functio…
Kotlin 是一门现代但已成熟的编程语言旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作并提供了多种方式在多个平台间复用代码以实现高效编程。
https://play.kotlinlang.org/byExample/01_introduction/02_Functions
其他关于kt的博客文章如下
Kotlin学习——hello kotlin 函数function 变量 类 泛型 继承Kotlin学习——流程控制when循环range工具 kt里的equals if实现类似三元表达式的效果Kotlin学习——流程控制when循环range工具 kt里的equals if实现类似三元表达式的效果 目录 引出Higher-Order Functions 高阶函数Lambda Functions 函数式编程Extension Functions and Properties 扩展函数和属性 总结 引出 1.kt中高阶函数返回一个函数 2.kt里面的函数式编程 3.扩展函数和属性
Higher-Order Functions 高阶函数
高阶函数是以另一个函数为参数和/或返回一个函数的函数。
调用传递两个整数值和函数参数sum的高阶函数
:: 是Kotlin中按名称引用函数的表示法。
package com.tianju.funcKt/*** 以另一个函数作为参数返回一个函数*/
fun calculate(x:Int,y:Int,operation:(Int,Int)-Int):Int{return operation(x,y)
}fun sum(x: Int,y: Int) xyfun main() {val sum calculate(4,5, ::sum)// 使用lambda 表达式val mulResp calculate(5,6) { a, b - a * b }println(sum is $sum, multiply is $mulResp)
}Int-Int表示平方函数的参数和返回类型 package com.tianju.funcKt/*** Int-Int表示平方函数的参数和返回类型*/
fun operator() : (Int) - Int {return ::square
}fun square(x:Int): Int {return x*x
}fun main() {// 调用operator 获得结果赋值给变量func// 返回的是square函数val func operator()println(func(2))
}Lambda Functions 函数式编程
Lambda函数“lambdas”是一种创建特殊函数的简单方法。由于类型推理和隐式it变量Lambdas在许多情况下可以非常简洁地表示。
如果lambda由单个函数调用组成则可以使用函数指针(:: )对于只有一个参数的lambda可以使用隐式it变量。当可以推断它的类型时通常是这样这尤其有用。
package com.tianju.funcKtval upperCase1:(String) -String {str:String -str.uppercase()}val upperCase2:(String) -String {str - str.uppercase()}val upperCase3 {str:String - str.uppercase()}val upperCase4: (String) - String {it.uppercase()}val upperCase5:(String) - String String::uppercaseval myCase:(String,Int) - String {s, i - ${s.uppercase()}---$i }fun main() {println(upperCase1(hello))println(upperCase5(kotlin))println(myCase(Pet,1))
}Extension Functions and Properties 扩展函数和属性
Kotlin允许您使用扩展机制向任何类添加新成员。也就是说有两种类型的扩展扩展函数和扩展属性。它们看起来很像普通的函数和属性但有一个重要的区别您需要指定扩展的类型。 package com.tianju.funcKtdata class Item(val name: String,val price:Float)data class Order(val items: CollectionItem)// 如果有找到了返回it.price,否则返回的是0
fun Order.maxPriceItem():Float this.items.maxByOrNull {it.price}?.price ?:0f/*** 上面简写的方式展开就是下面这样子*/
fun Order.maxPriceName():String{val maxByOrNull this.items.maxByOrNull { it.price }if (maxByOrNull ! null) {return maxByOrNull.name}else{return NO_PRODUCT}
}// 为Order类型添加扩展属性。
val Order.allNames:String get() items.map { it.name }.joinToString()fun main() {val order Order(listOf(Item(apple,12.4f),Item(wine,58f)))println(order.maxPriceItem())println(order.maxPriceName())println(order.allNames)
}甚至可以对空引用执行扩展。在扩展函数中您可以检查对象是否为null并在代码中使用结果
fun T T?.nullSafeToString() this?.toString() ?: NULL总结
1.kt中高阶函数返回一个函数 2.kt里面的函数式编程 3.扩展函数和属性