【发布时间】:2017-02-11 01:05:11
【问题描述】:
我有以下代码,它可以正常运行:
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}"}
但是当我将类名从“Array”更改为其他名称时,例如“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的状态不同)。
标签: ruby syntax-error yield