这在clojure中相当简单-

(def a (partial println "Hello:"))
(a "Bob")
(a "Bob" "Ganesh")

但这在鲁比看来很难。
:puts.to_proc.curry(3)[Kernel, "Hello:"]("Bob")
:puts.to_proc.curry(4)[Kernel, "Hello:"]("Bob", "Ganesh")

proc curry似乎无法返回varargs fn。
我们当然可以
class Proc
  def partial(*left)
    Proc.new do |*right|
      self.call *left, *right
    end
  end
end

但我想知道这是不是在标准图书馆。

最佳答案

请改为:

:puts.to_proc.curry(3)[Kernel, "Hello:"].("Bob")

在ruby中,bare paren只用于调用方法。对于调用过程,您需要执行.call()[].()操作。

关于ruby - curry varargs proc并在ruby中获取另一个varargs proc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34571954/

10-11 14:46