我可以在Ruby 1.9.x中使用无参数函数吗?
因此,我正在研究,我遇到了一个问题,我认为这是特定于我可以在Ruby 1.9.x中使用无参数函数吗?,ruby,parameters,Ruby,Parameters,因此,我正在研究,我遇到了一个问题,我认为这是特定于ruby1.9.x的 def test_calling_global_methods_without_parentheses result = my_global_method 2, 3 assert_equal 5, result end 我明白了: james@tristan:~/code/ruby_projects/ruby_koans$ rake (in /home/james/code/ruby_projects
ruby
1.9.x的
def test_calling_global_methods_without_parentheses
result = my_global_method 2, 3
assert_equal 5, result
end
我明白了:
james@tristan:~/code/ruby_projects/ruby_koans$ rake
(in /home/james/code/ruby_projects/ruby_koans)
cd koans
/home/james/.rvm/rubies/ruby-1.9.2-p180/bin/ruby path_to_enlightenment.rb
/home/james/code/ruby_projects/ruby_koans/koans/about_methods.rb:21:in `eval': (eval):1: syntax error, unexpected tINTEGER, expecting keyword_do or '{' or '(' (SyntaxError)
assert_equal 5, my_global_method 2, 3
^
from /home/james/code/ruby_projects/ruby_koans/koans/about_methods.rb:21:in `test_sometimes_missing_parentheses_are_ambiguous'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:377:in `meditate'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:449:in `block in walk'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:460:in `block (3 levels) in each_step'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:458:in `each'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:458:in `block (2 levels) in each_step'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:457:in `each'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:457:in `each_with_index'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:457:in `block in each_step'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:455:in `catch'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:455:in `each_step'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:448:in `walk'
from /home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:470:in `block in <top (required)>'
rake aborted!
Command failed with status (1): [/home/james/.rvm/rubies/ruby-1.9.2-p180/bi...]
/home/james/code/ruby_projects/ruby_koans/Rakefile:86:in `block in <top (required)>'
(See full trace by running task with --trace)
james@tristan:~/code/ruby_projects/ruby_koans$
james@tristan:~/code/ruby_项目/ruby_koans$rake
(in/home/james/code/ruby_projects/ruby_koans)
cd koans
/home/james/.rvm/rubies/ruby-1.9.2-p180/bin/ruby-path_-to_-induction.rb
/home/james/code/ruby_projects/ruby_koans/koans/about_methods.rb:21:in'eval':(eval):1:语法错误,意外的tINTEGER,应为关键字_do或“{”或“(”(SyntaxError)
断言等于5,我的全局方法2,3
^
from/home/james/code/ruby_projects/ruby_koans/koans/about_methods.rb:21:test_中有时缺少括号是不明确的
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:377:in“冥想”
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:449:in'block in walk'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:460:in“每个步骤中的块(3个级别)”中
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:458:in'each'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:458:in“每个步骤中的块(2个级别)”中
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:457:in'each'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:457:in'each_with_index'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:457:in'block in each_step'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:455:in'catch'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:455:in'each_step'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:448:in'walk'
from/home/james/code/ruby_projects/ruby_koans/koans/edgecase.rb:470:in'block in'
雷克流产了!
命令失败,状态为(1):[/home/james/.rvm/rubies/ruby-1.9.2-p180/bi…]
/home/james/code/ruby_projects/ruby_koans/Rakefile:86:in'block in'
(通过使用--trace运行任务查看完整跟踪)
james@tristan:~/code/ruby_projects/ruby_koans$
我查看了GitHub上的几个不同的存储库,它们声称最近(在过去两个月内)完成了Koans,我只看到了我使用的答案(第一个代码片段)。那么,是我的代码、Ruby安装还是其他什么原因?我不知道为什么,但代码的评估如下:
def test_calling_global_methods_without_parentheses
assert_equal 5, my_global_method 2, 3
end
问题是,这是含糊不清的,可能意味着
assert_equal(5,my_global_method(2,3))
或assert_equal(5,my_global_method(2,3))
。在这种特定情况下,您必须使用括号。您得到的错误不是来自您列出的代码,而是来自相关文件的下面的代码。注释说明:
注意:我们在下面使用eval,因为示例代码被认为在语法上无效
不要忘记删除方法调用和第一个参数之间的空格 这样做
eval“断言等于5,我的全局方法(2,3)”
而不是
eval“assert_equal 5,my_global_method(2,3)”#小心空格!
谢谢!这也提醒我,我真的需要更多地了解错误。。。