gpt4 book ai didi

ruby - 在 Ruby 中是否有等同于 F# |> (方法链接)的东西?

转载 作者:数据小太阳 更新时间:2023-10-29 08:20:27 26 4
gpt4 key购买 nike

我有一个 F# 示例:

let a n = Convert.ToString(n:int32)

我可以说:

3 |> a

计算结果为 "3"。 Ruby 中是否有类似的构造?

这是 F#(和其他 FP 语言)的方法链,它不是函数组合,也不是 Ruby 中的方法链,即返回 self 的对象,以便可以调用对象上的其他方法,如 a.b.c.d.

最佳答案

这在 Ruby 中很容易实现。直接取自 F# 引用文档:

let function1 x = x + 1
let function2 x = x * 2

let result = 100 |> function1 |> function2
//> val result : int = 202

这可以用 Ruby 编写如下:

function1 = -> x { x + 1 }
function2 = -> x { x * 2 }

result = 100.pipe(function1).pipe(function2)
# => 202

Object#pipe 的以下实现:

class Object
def pipe(callable)
callable.(self)
end
end

或者用你的例子:

a = -> n { String(n) }

3.pipe(a)
# => '3'

let f x y = x * y

3 |> f(2)
// > 6

成为

f = -> (x, y) { x * y }

3.pipe(f.curry.(2))
# => 6

关于ruby - 在 Ruby 中是否有等同于 F# |> (方法链接)的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19340034/

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