【发布时间】:2021-02-14 12:14:47
【问题描述】:
这段代码我用了很多:
let inline (||>) (a: 'a option) (b: 'a -> unit) = if a.IsSome then b a.Value
所以我可以做类似的事情
myData ||> DoSomethingWithIt
不必测试 myData 是 Some 还是 None,因为有许多函数通常不需要测试选项。这样可以避免将测试放在函数本身中。
我想将此扩展到可以像 C# 那样做的类型的方法:
myData?.DoSomethingWithIt
基本上替换:
if myData.IsSome then myData.Value.DoSomethingWithIt
加上一些语法糖。
但我不知道如何操作运算符,以便它允许访问表达式中的类型方法。这在 F# 中可能吗?
我也愿意了解为什么如果它是一个坏主意:)
【问题讨论】:
-
重写
||>是个坏主意,因为它是用于元组解构(1, 2) ||> printfn "%d %d"的预定义运算符,如果有人试图打开您的模块,某些代码可能会中断 -
@JL0PD,我不知道!谢谢你告诉我
标签: f#