gpt4 book ai didi

Ruby 不能访问方法外的变量?

转载 作者:数据小太阳 更新时间:2023-10-29 06:33:33 24 4
gpt4 key购买 nike

我是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'])

当我尝试运行它时出现错误:

undefined local variable or method 'template' for main:Object (NameError)

我似乎无法访问 generateMethods 方法中的 templateresult 变量?

为什么?


更新:

似乎范围概念与javascript中的不同?

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

上面的代码可以工作。

最佳答案

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

$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'])

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

关于Ruby 不能访问方法外的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389432/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com