浙江建设招生网站,抖音代运营公司有哪些,python写网页,区块链开发技术的应用1 常规调用 Lambda 表达式总结 中对 Java 的 Lambda 表达式进行了总结#xff0c;本文将对 Kotlin 中的 Lambda 表达式进行总结。
1.1 无参函数
fun main() {var myFun: () - Unit {println(test)}myFun() // 打印: test
} 以上代码等价于#xff1a;
f…1 常规调用 Lambda 表达式总结 中对 Java 的 Lambda 表达式进行了总结本文将对 Kotlin 中的 Lambda 表达式进行总结。
1.1 无参函数
fun main() {var myFun: () - Unit {println(test)}myFun() // 打印: test
} 以上代码等价于
fun main() {var myFun: () - Unit fun() {println(test)}myFun() // 打印: test
}
1.2 有参函数
fun main() {var myFun: (String) - Unit { a -println(test, $a)}myFun(abc) // 打印: test, abc
} 以上代码等价于
fun main() {var myFun: (String) - Unit fun(a: String) {println(test, $a)}myFun(abc) // 打印: test, abc
} 当只有一个参数时可以使用 it 简化 Lambda 表达式如下。
fun main() {var myFun: (String) - Unit {println(test, $it)}myFun(abc) // 打印: test, abc
} 如果不使用某个参数可以使用下划线_简化如下。
fun main() {var myFun: (Int, Int) - Unit { _, b -println(test, $b)}myFun(3, 5) // 打印: test, 5
}
1.3 有返回值函数 Lambda 表达式中最后一行将作为返回值返回。
fun main() {var myFun: (Int, Int) - Int { a, b -a b}println(myFun(3, 5)) // 打印: 8
} 以上代码等价于
fun main() {var myFun: (Int, Int) - Int fun(a: Int, b: Int): Int {return a b}println(myFun(3, 5)) // 打印: 8
}
2 尾随 Lambda 表达式 当一个函数的最后一个参数是函数类型参数时可以使用尾随 Lambda 表达式。
2.1 无参函数
fun main() {outFun {println(inFun) // 打印: inFun}
}fun outFun(inFun: () - Unit) {inFun()
}
2.2 有参函数
fun main() {outFun { a -println(a) // 打印: abc}
}fun outFun(inFun: (String) - Unit) {inFun(abc)
} 当只有一个参数时可以使用 it 简化 Lambda 表达式如下。
fun main() {outFun {println(it) // 打印: abc}
}fun outFun(inFun: (String) - Unit) {inFun(abc)
}
2.3 有返回值函数
fun main() {outFun { a, b -a * b // 打印: 15}
}fun outFun(inFun: (Int, Int) - Int) {println(inFun(3, 5))
}
2.4 外层函数有多个参数 1尾随函数类型
fun main() {outFun(abc) {println(inFun)}
}fun outFun(a: String, inFun: () - Unit) {inFun() // 打印: inFunprintln(outFun, $a) // 打印: outFun, abc
} 说明当外层函数的最后一个参数是函数类型时可以将 {} 提到 () 外面该语法称为“尾随 Lambda 表达式”。 2非尾随函数类型
fun main() {outFun({println(inFun)}, abc)
}fun outFun(inFun: () - Unit, a: String) {inFun() // 打印: inFunprintln(outFun, $a) // 打印: outFun, abc
} 说明当外层函数的最后一个参数不是函数类型前面的某个参数是函数类型时必须将 {} 写到 () 里面。
3 return 使用 Lambda 表达式中不能直接使用 return 语句返回需要结合标签一起使用否则会编译报错内联函数除外详见 → 函数。
3.1 无返回值函数
fun main() {var myFun: (Int) - Unit xxx{if (it 3) {println(return xxx)returnxxx}println(end, $it)}myFun(3) // 打印: return xxxmyFun(5) // 打印: end, 5
}
3.2 有返回值函数
fun main() {var myFun: (Int) - String xxx{if (it 3) {returnxxx test1, $it}returnxxx test2, $it}println(myFun(3)) // 打印: test1, 3println(myFun(5)) // 打印: test2, 5
}
3.3 尾随函数 尾随 Lambda 表达式中可以使用外层函数的名字作为 return 的标签名也可以在 {} 前面自定义标签名。
fun main() {outFun {if (it 3) {println(inFun, return)returnoutFun}println(inFun)}
}fun outFun(inFun: (Int) - Unit) {inFun(3) // 打印: inFun, return
}