问题标签 [arrow-kt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
arrow-kt - 如何取消箭头kt IO?
是否可以取消 (Arrow-Kt) IO
?
RxJava
每当我这样做时,我都会observable.subscribe({ // handle success },{ // some errohandling })
得到一个Disposable
我可以召唤Disposable.dispose()
的东西。
与协程类似,doingcoroutineScope.launch { // Some suspending function }
返回一个Job
我可以调用的,Job.cancel()
甚至调用coroutineScope.cancel()
取消范围内的所有协程。
我正在寻找与 IO 相同的东西。我怎么能做到同样的事情IO
呢?我只是打电话IO.unsafeRunAsyncCancellable { // Some Operations }
,但如果必须的话,我似乎找不到取消它的方法。虽然它返回 a Disposable
,但我不完全知道如何处理它,因为它只是() -> Unit
.
有人可以在这里指导我吗?
android - Arrow KT 上的依赖注入
在Arrow Kt Documentation on Dependency Injection中,依赖是在“世界边缘”定义的,或者在 Android 中可以是 anActivity
或 a Fragment
。所以给定的例子如下:
但现在我在想SettingsActivity
这个例子中的怎么可能是unit tested
?由于依赖项是在活动中创建的,因此不能再更改它以进行测试?
当使用其他一些Dependency Injection
库时,这个依赖定义是在将要使用的类之外创建的。例如,在 中Dagger
,创建了一个Module
类来定义如何创建对象(依赖项),并使用一个类@Inject
来“注入”模块内部定义的依赖项。所以现在当单元测试时Activity
,我只需要定义一个不同的模块或手动将依赖项的值设置为一个模拟对象。
android - 如何使用 Android ViewModel 实现 Arrow Kt?
在 Android 中网络操作通常是在ViewModel
. 这确保即使重新创建Activity
or时Fragment
(例如当设备旋转时),网络调用也会继续进行并且不会被取消。
现在将网络请求的结果从ViewModel
视图(Activity
/ Fragment
)提交。您有一个反应组件,例如 a LiveData
orObservable
来设置它的值。喜欢:
我想知道是否有一种方法可以val resultLiveData = MutableLiveData<Result>()
不依赖于特定的实现,例如返回 a之类的LiveData
东西。higher kind
Kind<F, Result>
有没有办法我可以做:
所以我可以Kind<F, Result>
稍后用我想要的实现来定义?
kotlin - Kotlin 箭头库中 Either.fold() 的返回类型
我正在使用箭头库在 Kotlin 中学习函数式编程,并且遇到了以下任何类型的折叠函数的奇怪行为(至少对我而言)。
根据箭头折叠函数语法是
如果值为 Left 则执行ifLeft函数并返回类型C如果它是正确的则执行 ifRight 并返回具有相同类型C的值,但在我上面的代码片段中,如果值为 Left 则返回 String ,如果值为 Right 则返回 Int . 它如何接受这种语法?
kotlin - 在 kotlin 箭头库中理解 Validated.applicative
我遇到了下面的通用函数,它接受两种Either
类型和一个函数作为参数。如果两个参数都Either.Right
对它应用函数并返回结果,如果任何一个参数是Either.Left
它返回 NonEmptyList(Either.Left)。基本上它执行独立操作并累积错误。
上面的代码打印
在函数内部,它将 Either 转换为 ValidatedNel 类型并累积两个错误 ( Invalid(e=NonEmptyList(all=[error 1])) Invalid(e=NonEmptyList(all=[error 2])) )
我的问题是它如何执行此操作,或者任何人都可以从代码中解释以下行。
kotlin - 如何使用带有箭头库的 kotlin 以函数式编程风格附加数据
我是函数式编程的新手,我正在使用带有箭头函数库的 Kotlin。我想将以下函数转换为纯函数。每个func*()
调用都返回一个有效的字符串,并将其附加到可变字符串变量returnString
。据我所知,FP 函数不应该使用任何可变值。那么我将如何替换那些字符串附加行呢?
kotlin - 抛弃 Kotlin 箭头中的嵌套选项
我的数据类中有以下类型的值
我将如何访问最右边的Option<Sring>
. 我尝试过如下表达式
但它看起来不太好。有没有其他方法可以抛弃那些选项
kotlin - fx 块内的 IO 调度程序 VS KotlinX 调度程序
使用 IO 时,我可以在 fx 块中使用continueOn
,dispatchers.io()
也Dispatchers.IO
可以混合使用。有首选方法吗?两者有什么区别吗?
注意:我也在使用协程集成来运行 IO
kotlin - 从 Kotlin 箭头中提取值任一类型并将其分配给 const
这将是一个基本问题,但我无法找到解决方案。我需要从任一类型下方的右侧值中初始化一个常量。
我尝试了类似下面的方法,但它缩小了常量的范围。
我希望get
将其范围限定在when
语句之外。有没有办法做到这一点,或者 Arrow 不是为此目的而制作的?
kotlin - 如何在 Kotlin Arrow FX 中组合 IO 函数和其他效果
在处理它之前,我们经常需要一些请求验证。使用箭头 v 0.8,典型的消息处理程序如下所示:
这似乎是工作流的一个方便且富有表现力的定义。我试图在箭头 v 0.10.5 中定义类似的功能:
这会导致编译器错误“只能在协程主体内调用暂停函数”。原因是既map
和flatMap
功能Either
又Option
不是inline
。
事实上,关于 fx 的博客文章说
“很快你会发现你不能在为 Either 声明的函数中调用挂起函数,例如上面提到的函数,以及其他粉丝喜欢的 map() 和 handleErrorWith()。为此,你需要一个并发库!”
所以问题是为什么会这样,这种组合的惯用方式是什么?