如何在Ruby中定义/命名块?

时间:2011-03-15 16:48:34

标签: ruby

numbers = 1..10
print numbers.map {|x| x*x}

# I want to do:
square = {|x| x*x}
print numbers.map square

因为语法更简洁。我有办法在不必使用def + end的情况下执行此操作吗?

3 个答案:

答案 0 :(得分:14)

square = proc {|x| x**2 }
print number.map(&square)

答案 1 :(得分:8)

您不能将块分配给变量,因为块本身并不是对象。

可以做什么,是将Proc对象分配给变量,然后使用&一元前缀运算符将其转换为块:

numbers = 1..10
print numbers.map {|x| x * x }

square = -> x { x * x }
print numbers.map &square

答案 2 :(得分:1)

numbers = 1..10
square = lambda{|x| x*x }
numbers.map &square