我在與關閉了一點小麻煩,我想知道是什麼 爲規範化妝加法過程將是 的Ruby等價代碼。閉包在Ruby中
在方案它會像:
(define (make-adder n)
(lambda (x) (+ x n))
我在與關閉了一點小麻煩,我想知道是什麼 爲規範化妝加法過程將是 的Ruby等價代碼。閉包在Ruby中
在方案它會像:
(define (make-adder n)
(lambda (x) (+ x n))
這其實很接近......
def make_addr n
lambda { |x| x + n }
end
t = make_addr 100
t.call 1
101
在1.9可以使用...
def make_addr n
->(x) { x + n }
end
一個區別是,雖然Scheme只有一種過程,但Ruby有四種。大多數情況下,它們的行爲與標準lambda相似,但您應該嘗試understand all the details in depth。
這裏的另一種方式做到這一點在1.9:
make_adder = -> n, x { n + x }
hundred_adder = make_adder.curry[100]
hundred_adder[4] # => 104
非常感謝,這使我不再懷疑。 – burlsm