Как я могу определить / назвать блок в Ruby? - PullRequest
8 голосов
/ 15 марта 2011
numbers = 1..10
print numbers.map {|x| x*x}

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

Поскольку синтаксис более лаконичен.Есть способ сделать это без необходимости использовать def + end?

Ответы [ 3 ]

14 голосов
/ 15 марта 2011
square = proc {|x| x**2 }
print number.map(&square)
8 голосов
/ 15 марта 2011

Вы не можете назначить блок переменной, потому что блок на самом деле не является объектом как таковым.

То, что вы можете сделать, это присвоить объект Proc переменнойи затем преобразовать это в блок, используя унарный префиксный оператор &:

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

square = -> x { x * x }
print numbers.map &square
1 голос
/ 15 марта 2011
numbers = 1..10
square = lambda{|x| x*x }
numbers.map &square
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...