gpt4 book ai didi

f# - 如何在 Rx 中进行模式匹配。 Where 和 Select 在单个运算符中?

转载 作者:行者123 更新时间:2023-12-04 14:26:37 24 4
gpt4 key购买 nike

假设我有这种类型:

type T = int option

和这种类型的可观察对象:
let o : IObservable<T> = // create the observable

我正在寻找一种更好的方式来表达这一点:
o.Where(function | None -> false | Some t -> true)
.Select(function | Some t -> t)

An observable that only propagates the Some case.



有几件事我不喜欢。
  • 我正在使用 2 个运营商
  • 我进行了两次模式匹配
  • 第二个模式匹配并不详尽(使visual studio 显示警告并感觉奇怪)
  • 代码太多。每次我需要模式匹配时,模式都会重复。
  • 最佳答案

    感谢@Lee,我想出了一个不错的解决方案。

    o.SelectMany(function | None -> Observable.Empty() | Some t -> Observable.Return t)

    这适用于任何联合类型,而不仅仅是 Option。

    关于f# - 如何在 Rx 中进行模式匹配。 Where 和 Select 在单个运算符中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30488896/

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