У меня есть следующий код и он работает, как он должен:Изменение названия этого класса Ruby, вызывает ошибку
class Array
def my_name
first_name = "Bob"
last_name = "Smith"
yield(first_name, last_name)
end
end
['a', 'b', 'c', 'd'].my_name {|i, x| puts "#{i} #{x}"}
Но в тот момент я изменить имя класса из «массива» к чему-то еще, скажем " Array1 ", появляется следующая ошибка:
`<main>': undefined method `my_name' for ["a", "b", "c", "d"]:Array (NoMethodError)
Я не уверен, что эта ошибка означает, но ее нарушение моего кода. Это код не найден.
class Array1
def my_name
first_name = "Bob"
last_name = "Smith"
yield(first_name, last_name)
end
end
['a', 'b', 'c', 'd'].my_name {|i, x| puts "#{i} #{x}"}
Для жизни меня не может понять, что не так. Я просто пытаюсь понять, как использовать функцию yield для методов внутри класса. У меня действительно проблемы с этим, и если кто-то может мне помочь, это будет очень признательно. Благодаря!
BTW - 'yield' не является функцией, но ключевое слово (то есть тот же статус, как' 'def' или end', не такой же статус, как, например,' puts'). – Amadan