这有效:
if 1
if 1
elsif 2
elsif 3
end
end
Run Code Online (Sandbox Code Playgroud)
但这会产生语法错误:意外的 '(', expecting keyword_then or ';' or '\n'. 我正在尝试执行该方法1。
if 1
if 1()
elsif 2
elsif 3
end
end
Run Code Online (Sandbox Code Playgroud)
我不知道我应该根据错误假设什么。代码中较早的部分导致了问题?或者代码后面的某些内容导致了问题?
当你写
1()
Run Code Online (Sandbox Code Playgroud)
它是调用名为 的方法的语法1。
但1在 Ruby 中不是合法的方法名,方法名不能以数字开头。
如果您foo在范围内有一个方法,那么您可以foo()在您编写的地方编写1(),但是包含括号是多余的,因为它们是方法参数的包装器,并且您没有传递任何参数。
1被 ruby 解释为一个整数,如果你打开一个 irb 会话并输入1()你会看到与你看到的相同的错误消息“语法错误,意外的 '('”,它与事实无关,它是条件一个if声明。这很好用:
def foo
true
end
if foo()
puts "hooray"
else
puts "boo"
end
Run Code Online (Sandbox Code Playgroud)