Ruby

时间:2015-09-24 13:46:18

标签: ruby methods scope

我刚刚开始学习Ruby,目前正试图找出这种语法的含义。它看起来像方法定义旁边的变量名称( path )。它不在括号中,所以它不是参数。也许一个方法级变量?

def get_path path
   if clause
      @path = n
   else
      @path = m
   end
   return @path
end

没有参数传递给此方法。 任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:4)

在Ruby中,括号是可选的。这样:

def get_path path
end

与此相同:

def get_path(path)
end

请注意,您可以使用括号定义单行,如下所示:

def foo(a,b) puts (a*b).to_s end

但是如果您决定不使用括号,则必须添加分号,以便Ruby知道args列表的结束位置。调用方法也可以使用或不使用括号:

def bar a,b; puts (a*b).to_s end
bar 2,3
#6

答案 1 :(得分:0)

  

如果您没有需要立即使用方法结果的代码,   Ruby允许指定省略括号的参数:

source

这意味着:

get_path path

相当于:

 get_path(path)

答案 2 :(得分:0)

方法调用中的参数以及方法定义都有可选的括号。

invoking / defining没有参数的方法或调用具有关键字状态的方法时(即使这有点模糊),人们应该省略它们。

在使用参数定义方法时省略括号(就像这里的情况一样)被认为是严重的冒犯,即使它仍然是有效的语法。