F#,管道转发第一个参数

2023-12-20

与这个问题非常相似:F# 管道第一个参数 https://stackoverflow.com/questions/35716622/f-pipe-first-parameter

我目前正在学习 F# 和函数式编程,我想知道是否有一种简单的方法可以通过管道转发第一个参数(而不是最后一个参数)。

例如,如果我想通过管道转发最后一个参数,它看起来非常漂亮和干净:

[4;5;6]
    |> List.append [1;2;3]

// Result: [1;2;3;4;5;6]

如果我想通过管道转发第一个参数,我可以使用“fun x ->”函数,但我只是好奇是否有更干净的方法。

[1;2;3]
    |> fun x -> List.append x [4;5;6]

// Result: [1;2;3;4;5;6] 

非常感谢。


附:我的同事刚刚帮我解决了这个问题。但如果您对 F# 初学者有任何建议,我将不胜感激。谢谢。


当参数的顺序不方便时,您始终可以转换函数本身以使其以不同的顺序获取参数:

let flip f x y = f y x

[1; 2; 3]
    |> (flip List.append) [4; 5; 6]

转换函数在许多情况下都很有用。它是函数式程序员的面包和黄油。

但最终,我相信,可读性是最重要的:程序被读取的次数远远多于编写的次数。当我发现自己处于类似的情况,并且由于某种原因我不想命名中间值或使用 lambda 表达式时,我会为自己定义一个可以直观理解的函数:

let prependTo a b = List.append b a

[1; 2; 3] 
   |> prependTo [4; 5; 6]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

F#,管道转发第一个参数 的相关文章

随机推荐