可以看到这个变量可以等于一个lambda表达式,也可以等于另一个lambda表达式变量,还可以等于一个通俗函数,然则在函数名前须要加上(::)来获取函数引用。
这个类似C++中的函数指针,然而在Python中可以直接应用函数名作为函数引用,下面是c++函数指针的例子:
回到Kotlin,我们还可以将一个函数传递给另一个函数,比如:
- //函数参数
- fun doMap(list: List, function: (it: T) -> Any) {
- for (item in list) {
- function(item)
- }
- }
Python中的lambda表达式:
第一个参数是一个List,第二个参数是一个函数,目标就是将List中的每一个元素都履行一次序递次二个函数。应用办法如下:
- val strList = listOf("h" ,"e", "1", "a", "b", "2", " ", "", "c", "5", "7", "F")
- doMap(strList, {item ->print("item: ${upperLetter(item)}, ") })
- fun upperLetter(item: String): String {
- if (item.isLetter()) {
- return item.toUpperCase()
- }
- return item
- }
第二个参数直接传进去了一个lambda表达式,当然也可以传一个函数引用:
- val strList = listOf("h" ,"e", "1", "a", "b", "2", " ", "", "c", "5", "7", "F")
- doMap(strList, ::printUpperLetter)
- fun printUpperLetter(item: String) {
- print("item: ${upperLetter(item)}, ")
- }
- fun upperLetter(item: String): String {
- if (item.isLetter()) {
- return item.toUpperCase()
推荐阅读
如不雅办事调用的缺点率高于预先设置的缺点率。 Circuit-breaker 的状况会大年夜 CLOSED 变成 OPEN(熔断状况)。 当 Circuit-breaker 状况为 OPEN 时,所有进来的请求会被阻拦。 过一段时光,会让一些单>>>详细阅读
本文标题:Kotlin函数与函数式编程浅析
地址:http://www.17bianji.com/lsqh/35653.html
1/2 1