【发布时间】:2014-05-08 14:37:02
【问题描述】:
我运行一个简单的函数:
def test
a = 10
yield a
puts a
end
test { |x| x += 10 }
得到意想不到的答案
> 10
接下来,我尝试以这种方式重用该函数:
def test
a = 10
a = yield a
puts a
end
结果是
> 20
但我觉得这段代码很丑,而且不是 ruby 风格的,我该如何改进它?
【问题讨论】:
-
将
test { |x| x += 10 }传递给def test; a = 10; yield a; puts a; end计算结果为def test; a = 10; 20; puts a; end。您可以看到a并没有因此而改变。是的,Ruby 有时看起来有点朴素,但还是很漂亮。您的第二次尝试非常符合“Ruby 风格”。 -
我唯一要改变的是块本身:
{ |x| x + 10 }