Как вызвать методы класса в блоке? - PullRequest
0 голосов
/ 15 января 2020
class ShoppingList
  def add(a,b)
    print a,b
  end
  def items(&block)
    block.call
  end
end

s1 = ShoppingList.new
s1.add(4,10)
s1.items do 
  add(5,2)
end

неопределенный метод `add 'для main: Object

(repl): 19: в` block in'

(repl): 12: в `items '

как вызвать add в блоке? ..

1 Ответ

4 голосов
/ 15 января 2020

Если вы хотите позвонить block в контексте получателя сообщения items, вы можете использовать instance_eval:

def items(&block)
  instance_eval(&block)
end
...