将Java Optional转换为Arrow Option的最佳方式是什么?我被期望有一些开箱即用的东西,但它不在那里.类似于:

fun <T> Optional<T>.toOption(): Option<T> = if (this.isPresent) Some(this.get()) else none()

推荐答案

目前没有这样的功能,但这样的贡献将是受欢迎的!

但是,除非绝对必要,否则Arrow不建议使用Option.唯一的用例是nested nulls,这是RxJava和项目react 堆的Reactive X实现的限制.这两个库都不允许在FlowableFluxMono等中使用null作为其泛型值A.

Analogue,您不能将null用作Kotlin中泛型代码的empty signal.除非使用A : AnyA约束为非空.

只有在这两种情况下才应该使用Arrow的选项,否则Arrow维护者建议使用Kotlin的可空类型.

Kotlin相关问答推荐

用普通Kotlin理解Gradle的Kotlin DSL'""

&x是T&q;和&q;(x为?T)!=空(&Q;)?

Kotlin stlib中是否有用于将列表<;对<;A,B&>;转换为对<;列表<;A&>,列表<;B&>;的函数

如何在操作系统版本上正确获取Room数据库的路径>;=26 sdk?

为何Kotlin标准库中的AND和OR函数不能像&&和||一样进行短路运算?

compareBy 如何使用布尔表达式在 kotlin 中工作

Kotlin 可打包类抛出 ClassNotFoundException

AIDL 中的 Parcelize 注释:Incompatible types: Object cannot be converted to MyCustomObject

参考 Kotlin 中的 Java 接口静态字段

IntelliJ 不会根据 ktlint 的期望对 Kotlin 导入进行排序

如何修复 ViewPager2 中的Design assumption violated错误?

如何在 Kotlin 中创建一个打开新活动(Android Studio)的按钮?

将协同路由调用放在存储库或ViewModel中哪个更好?

Jacoco在Gradle 7.0.2和Kotlin 1.5.10上失败

如何使用kotlin中的反射查找包中的所有类

Kotlin通过映射委托属性,如果映射中不存在,则抛出NoTouchElementException

Kotlin:如何从另一个类访问字段?

Kotlin out-projected 类型禁止使用

Java中lazy的Kotlin类似功能是什么?

如何启用spring security kotlin DSL?