gpt4 book ai didi

kotlin - Kotlin arrow.kt-Option.getOrElse接受T以外的其他类型

转载 作者:行者123 更新时间:2023-12-02 13:05:36 25 4
gpt4 key购买 nike

我正在尝试使用Option.getOrElse()方法。

根据消息来源:

inline fun <R> fold(ifEmpty: () -> R, ifSome: (A) -> R): R = when (this) {
is None -> ifEmpty()
is Some<A> -> ifSome(t)
}

fun <T> Option<T>.getOrElse(default: () -> T): T = fold({ default() }, ::identity)

但是,当我用返回值不是 T类型的值的lambda调用getOrElse时,它不会显示任何错误编译时间或运行时。
val value1 = Some("val")

// No error
value1.getOrElse { true }

这似乎不正确。我究竟做错了什么?

最佳答案

这是因为Optioncovariant(您可以看到它被声明为 Option<out A> ),因此value1也是Option<Any>,并且{ true }推断为() -> Any

关于kotlin - Kotlin arrow.kt-Option.getOrElse接受T以外的其他类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57011052/

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