更新
我正在设计一种实验性编程语言,问题是包括闭包还是只使用一流的函数。为了决定这一点,我需要现实的用例/示例来展示闭包优于一流函数的好处。我知道如果没有它们,您可以使用两者中的一个来实现您可以实现的一切,但是有几个用例例如一流的功能,其中代码更易于阅读(例如更短或不分为几个类)。例如:
红宝石:
[1,5,7].map{|x| x*x }
[1,'test',3].select{|x| x.kind_of? Integer}.map{|x| x.to_s }
big_array.each{ |item| puts item }
如果没有一流的函数,这些示例将更加冗长,因为您将不得不使用 for 循环或类似的东西。
现在,哪些用例显示了闭包的用处?尽管我经常使用一流的函数,但我真的想不出好的闭包用例。你有什么好的闭包用例吗?
原帖
我不明白为什么闭包绑定到变量而不仅仅是值,例如:
红宝石:
x = 5
l = lambda { x }
l.call #=> 5
x = 100
l.call #=> 100
引用变量而不是仅仅在定义闭包时引用存储在变量中的值有什么用?就像在这个例子中一样:
红宝石:
x = 5
l = lambda { x }
l.call #=> 5
x = 100
l.call #=> 5, not 100
是否有很好的用例需要在定义闭包时引用变量而不仅仅是这些变量的值?