Ruby无法访问方法外的变量?

我是Ruby的新手,看来Ruby确实支持在我想要做的事情之后在刚才访问的方法之外定义的变量:


template=<<MTEMP #methodName#:function(){}, MTEMP result=""; def generateMethods(mds) mds.each do |md| result+=template.gsub(/#methodName#/,md).to_s+"\n"; end result; end puts generateMethods(['getName','getAge','setName','setAge']) 

当我试图运行它时,我收到错误:

未定义的局部变量或main的方法’template’:Object(NameError)

看来我无法在generateMethods方法中访问templateresult变量?

为什么?


更新:

看来范围概念与javascript中的不同?

 var xx='xx'; function afun(){ console.info(xx); } 

上面的代码将起作用。

generateMethods函数中的resulttemplate变量与外部声明的resulttemplate变量不同,并且是该函数的本地变量。 您可以使用$将它们声明为全局变量:

 $template=< 

但是这个function的目的是什么? 如果您能更多地解释您的问题,我认为有更简洁的方法可以做到这一点。

您正在声明局部变量,而不是全局变量。 有关更多(简化)详细信息,请访问此站点: http : //www.techotopia.com/index.php/Ruby_Variable_Scope

局部变量是它们定义的范围的本地变量。这就是为什么它们被称为局部变量,毕竟!

因此,您无法从其他范围访问它们。 这是局部变量的全部要点