我已声明以下运算符以帮助使我的咖喱代码更清晰
Pipe-Through允许值通过方法传递并从另一端继续。我认为这有助于使我的代码更简洁。
let (|=>) x f = x |> f |> ignore; x
使用示例
let y = x |> transform
y |> logger.LogInformation
y
|> process
|> return
现在变成
x
|> transform
|=> logger.LogInformation
|> process
|> return
这有用还是我重新发明了轮子
答案 0 :(得分:1)
它是有用的,并且像所有好的发明一样,它也是由他人独立完成的。
Scott Wlaschin称之为tee
:https://fsharpforfunandprofit.com/rop/
建议的运算符为|>!
:
let inline tee f v = f v ; v
let inline (|>!) v f = f v ; v
let inline (>>!) g f = g >> fun v -> f v ; v /// composition
(5 * 8) |> tee (printfn "value = %d") |> doSomethingElse
(5 * 8) |>! printfn "value = %d" |> doSomethingElse
此定义与您的定义稍有不同,因为它不使用ignore
。
感谢分享!