gpt4 book ai didi

kotlin - Kotlin 中 lambda 和 KFunction 的区别

转载 作者:行者123 更新时间:2023-12-02 01:09:41 25 4
gpt4 key购买 nike

以下内容无法编译:

fun<T> doSomething(value: T, action: (value: T) -> String = Any::toString){
//do something
}

错误是:

Kotlin: Type mismatch: inferred type is KFunction1<Any, String> but (T) -> String was expected

让它工作很容易:

fun<T> doSomething(value: T, action: (t: T) -> String = {t -> t.toString()}) = action(value)

但是,这让我想知道:lambda 和 KFunctions 之间有什么区别?为什么我们两者都需要?

还有更简单的方法来提供 Any::toString 作为默认操作吗?

最佳答案

代码无法编译的原因与 lambda 和 KFunction 之间的差异无关。它无法编译,因为参数需要是 (T) -> String 类型的函数,而 Any::toString(任意)-> 字符串

关于kotlin - Kotlin 中 lambda 和 KFunction 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52258696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com