Недавно я пытался сделать что-то вроде этого:
a = "some string"
b = Proc.new{ upcase }
a.instance_eval b
Что дает ошибку:
TypeError: невозможно преобразовать Proc в String
но это работает:
def b(&block)
"some string".instance_eval &block
end
b{ upcase }
Дальнейший взгляд с этим методом:
def b(&block)
"some string".instance_eval block
end
Выдает ту же ошибку Proc to String
.
Итак... я понимаю блоки так, что это просто процессы. Но, очевидно, есть что-то особенное в том, чтобы иметь этот &
амперсанд...
Может кто-то объяснить это мне? Можно ли преобразовать обычный процесс во что-то особенное в этом объекте &block
?
редактировать
Только что разобрался со своим вторым вопросом, добавьте &
к процедуре... это было легко, но ЧТО это на самом деле делает?