这个Kotlin返回值意味着什么?:(产品)->布尔值

vom3gejh  于 2023-03-19  发布在  Kotlin
关注(0)|答案(2)|浏览(156)

我很难理解这是什么类型的返回值:

private fun someFun(products: List<Product>): (Product) -> Boolean {
// something
}

这种返回值叫什么,它有什么作用?

xj3cbfub

xj3cbfub1#

概述

(Product) -> Boolean称为函数类型,详见官方文档
这里的关键主题是lambda高阶函数。本质上,您可以将someFun视为返回 * 另一个方法 * 的方法--或者更确切地说,可以将Product转换为Boolean

用法

以下是完成和使用代码的方式:

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

wordCounter是一个(String) -> Int类型的对象,它可以用来将String s转换为Int,无论何时使用它,它都会执行你之前写的代码(lambda),所以它本质上就像你创建了一个函数,只是它是一个对象--一个 * 函数对象 *。

kkbh8khc

kkbh8khc2#

这是一个函数类型。someFun返回一个接受Product并返回Boolean的函数。
例如

fun foo(product: Product): Boolean {
    ...
}

相关问题