Ruby无法访问方法之外的变量?
我是Ruby新手,当我想做一些事情时,Ruby似乎确实支持在刚才访问的方法之外定义的变量:Ruby无法访问方法之外的变量?,ruby,Ruby,我是Ruby新手,当我想做一些事情时,Ruby似乎确实支持在刚才访问的方法之外定义的变量: 上述代码将起作用。生成方法函数中的结果和模板变量与外部声明的变量不同,并且是该函数的局部变量。您可以使用$将它们声明为全局变量: $template=<<MTEMP #methodName#:function(){}, MTEMP $result=""; def generateMethods(mds) mds.each do |md| $result+=$template.gs
上述代码将起作用。生成方法函数中的
结果
和模板
变量与外部声明的变量不同,并且是该函数的局部变量。您可以使用$
将它们声明为全局变量:
$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'])
$template=您正在声明局部变量,而不是全局变量。有关更多(简化)的详细信息,请参阅此网站:
局部变量是其定义范围的局部变量。这就是为什么他们被称为局部变量,毕竟
因此,您不能从其他范围访问它们。这就是局部变量的全部意义。事实上,我只想根据函数名在javascript中生成一些方法。@hguser在ruby中不建议使用全局变量,就像您知道在javascript中不建议使用全局变量以避免命名冲突一样,找到比声明变量更好的方法来处理变量globalIt在Javascript(和Python)中的工作方式有所不同,这可能是OP造成混淆的原因。如果你不表现得像Ruby那样做事是不言而喻的,那么你的回答会更有帮助。锑:是的,作为Ruby的新手,这也让我有点困惑。如果这是正确的语义,也可以将变量定义为常量。那么这个变量在OP的方法中是可以访问的。这个问题有一个合适的答案。
var xx='xx';
function afun(){
console.info(xx);
}
$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'])