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)
所以你可以像函数一样使用它,在Product s上调用它,得到Boolean作为返回。
示例
用另一个更具体的例子可能更容易理解:
val wordCounter: (String) -> Int = { it.split(" ").size }
println(wordCounter("hello")) // 1
println(wordCounter("hello world")) // 2
2条答案
按热度按时间xj3cbfub1#
概述
(Product) -> Boolean
称为函数类型,详见官方文档这里的关键主题是lambda或高阶函数。本质上,您可以将
someFun
视为返回 * 另一个方法 * 的方法--或者更确切地说,可以将Product
转换为Boolean
。用法
以下是完成和使用代码的方式:
所以你可以像函数一样使用它,在
Product
s上调用它,得到Boolean
作为返回。示例
用另一个更具体的例子可能更容易理解:
wordCounter
是一个(String) -> Int
类型的对象,它可以用来将String
s转换为Int
,无论何时使用它,它都会执行你之前写的代码(lambda),所以它本质上就像你创建了一个函数,只是它是一个对象--一个 * 函数对象 *。kkbh8khc2#
这是一个函数类型。
someFun
返回一个接受Product
并返回Boolean
的函数。例如