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