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
方法中访问template
和result
变量?
为什么?
更新:
看来范围概念与javascript中的不同?
var xx='xx'; function afun(){ console.info(xx); }
上面的代码将起作用。
generateMethods
函数中的result
和template
变量与外部声明的result
和template
变量不同,并且是该函数的本地变量。 您可以使用$
将它们声明为全局变量:
$template=<
但是这个function的目的是什么? 如果您能更多地解释您的问题,我认为有更简洁的方法可以做到这一点。
您正在声明局部变量,而不是全局变量。 有关更多(简化)详细信息,请访问此站点: http : //www.techotopia.com/index.php/Ruby_Variable_Scope
局部变量是它们定义的范围的本地变量。这就是为什么它们被称为局部变量,毕竟!
因此,您无法从其他范围访问它们。 这是局部变量的全部要点 。