【发布时间】:2016-01-02 23:53:25
【问题描述】:
这在 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 似乎无法返回可变参数 fn。
当然可以
class Proc
def partial(*left)
Proc.new do |*right|
self.call *left, *right
end
end
end
但我想知道这是否在标准库中。
【问题讨论】:
-
请陈述问题,以便那些熟悉 Ruby 但不熟悉 Closure 的人能够理解。 “varargs fn”是指带有可变数量参数的咖喱过程吗?对于您的示例,您希望 proc 在调用时返回什么?
-
数字不定,是的。 Varargs 是一个中性语言术语。