在Ruby中,如何在没有方法调用的情况下将变量传递给参数?

时间:2016-10-25 21:46:03

标签: ruby variables methods parameters arguments

给出以下代码:

def method
  words = "33"
  return words
end

def callmethod
  words = method
  result =  printout(words)
end

def printout(words)
  puts (words)
end

callmethod #will print out --> "33" (words from method)

当未明确调用变量words时,Ruby如何识别变量callmethod是方法调用(printout(words))的一部分?在这种情况下,我专门讨论结果= .htaccess。似乎这个函数正在拾取变量词(方法的返回值),即使我还没有使用方法调用来明确地将它放入。有人可以向我解释这是如何实现的吗?

1 个答案:

答案 0 :(得分:3)

callmethod方法中words是一个局部变量,其值为方法method的返回值。

printout(words)按预期工作,因为您传递的是局部变量words的值,即字符串"33"

Ruby method_name()在调用方法时是可选的。如果您碰巧有一个具有相同名称的局部变量作为方法,为了让Ruby知道您想要调用方法,而不是获取局部变量的值,您可以说method_name()。但是有一个更好/推荐的选项 - self.method_name