我试图自学Ruby。我不认识任何知道它的人,所以我没有任何人可以帮助解决我非常简单,也许是烦人的问题。我运行以下代码并收到以下错误:
def simon_says (command)
def echo (param)
puts "#{param}"
end
end
错误:
PS R:\learn_ruby\03_simon_says> rake
(in R:/learn_ruby)
You must use ANSICON 1.31 or later (http://adoxa.3eeweb.com/ansicon/) to use colour on Windows
Simon says
echo
should echo hello (FAILED - 1)
Failures:
1) Simon says echo should echo hello
Failure/Error: echo("hello").should == "hello"
NoMethodError:
undefined method `echo' for #RSpec::Core::ExampleGroup::Nested_1::Nested_1:0x2fb5690>
# ./03_simon_says/simon_says_spec.rb:19:in `block (3 levels) in <top (required)>'
Finished in 0.003 seconds
1 example, 1 failure
可以在这里找到Rspec代码(Github):simon_says_spec.rb
我真的不知道出了什么问题。为什么会说'回声&#39;未定义?它看起来像我。我也试过输出&#34;你好&#34;本身而不是方法参数(param)。同样的错误。所有帮助赞赏。此外,如果有人知道更合适的地方我可以获得这种帮助,那就很好。
答案 0 :(得分:1)
您的计划说明如下:
定义名为
simon_says
的方法。执行该函数时,它应该定义一个名为echo
的方法。
因此,在您调用simon_says()
之前,echo
不存在:
echo("foo")
# NoMethodError
simon_says("whatever")
# => nil
echo("bar")
# bar
# => nil
现在,我不知道为什么你在def echo
内包裹了def simon_says
,所以我无法提供任何有用的建议,你应该< / em>做的不是你现在的样子。
答案 1 :(得分:1)
按照你的规格,我猜simon_says是上课。这不是方法。您正在定义方法内部的方法。试试这个
class SimonSays
def echo params
puts "#{params}"
end
end