这在clojure中相当简单 -
(def a (partial println "Hello:"))
(a "Bob")
(a "Bob" "Ganesh")
但这在Ruby中似乎很难。
: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
但我想知道这是否在标准库中。
答案 0 :(得分:0)
请改为尝试:
:puts.to_proc.curry(3)[Kernel, "Hello:"].("Bob")
在ruby中,裸露的parens只能调用方法。对于调用触发器,您需要执行.call()
或[]
或.()
。