gpt4 book ai didi

java - 是否可以将 Kotlin 的代理委托(delegate)与现有的类/对象(即 Arrow 的 Either)一起使用?

转载 作者:行者123 更新时间:2023-12-02 13:16:37 26 4
gpt4 key购买 nike

我有一些专门的类,我想使用 Kotlin 和 Arrow 创建它们,它们将环绕 Arrow Either monad。我创建了以下代码来使用 Kotlin 的委托(delegate),但我想知道它是否可以简化或变得更惯用。任何建议,将不胜感激。
感谢您的时间与兴趣。

internal data class EitherWrapper<L,R>(private var delegate: Either<L,R>) {
internal operator fun getValue(thisRef: Any?, property: KProperty<*>): Either<L,R> {
return delegate
}

internal operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Either<L,R>) {
delegate = value
}
}

fun main(args: Array<String>) {
val delegate: Either<Exception, String> = Right("howdy")
val myeither: Either<Exception, String> by EitherWrapper(delegate)
println("IsLeft(): ${myeither.isLeft()}")
println("IsRight(): ${myeither.isRight()}")
}

最佳答案

您的代码是正确和正确的,据我所知,您可以做的唯一改进是使其通用,而不是特定于任何一个,如下所示:

internal data class DelegateWrapper<T>(private var delegate: T) {
internal operator fun getValue(thisRef: Any?, property: KProperty<*>): T =
delegate

internal operator fun setValue(thisRef: Any?, property: KProperty<*>, value: T) {
delegate = value
}
}

关于java - 是否可以将 Kotlin 的代理委托(delegate)与现有的类/对象(即 Arrow 的 Either)一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63165542/

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