是否可以使用 ruby​​ 中的数字名称的方法?

ste*_*hen -4 ruby

这有效:

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)

我不知道我应该根据错误假设什么。代码中较早的部分导致了问题?或者代码后面的某些内容导致了问题?

Les*_*ill 6

当你写

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)