我很难理解这是什么类型的返回值:
private fun someFun(products: List<Product>): (Product) -> Boolean {
// something
}
Run Code Online (Sandbox Code Playgroud)
这种返回值叫什么,它有什么作用?
(Product) -> Boolean称为函数类型。有关更多信息,请参阅官方文档。
这里的关键主题是lambda或高阶函数。本质上,您可以将其视为返回另一个方法的someFun方法- 或者更确切地说,可以将s 转换为s。ProductBoolean
这是您的代码的完成和使用方式:
private fun someFun(products: List<Product>): (Product) -> Boolean {
// 'it' is Product, now you have to return a Boolean
return { it.isExpensive }
}
// and usage:
val result = someFun(products)
val foo: Boolean = result(someProduct)
val bar: Boolean = result(anotherProduct)
Run Code Online (Sandbox Code Playgroud)
所以你可以像函数一样使用它,在Products 上调用它,获得Boolean回报。
用另一个更具体的例子可能更容易理解:
val wordCounter: (String) -> Int = { it.split(" ").size }
println(wordCounter("hello")) // 1
println(wordCounter("hello world")) // 2
Run Code Online (Sandbox Code Playgroud)
wordCounter是一个类型的对象(String) -> Int。它可用于将s转换 为。每当您使用它时,它都会执行您之前编写的代码(lambda)。所以它本质上就像你创建了一个函数,只是它是一个对象 - 一个函数对象。StringInt
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |