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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

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

我无法访问templateresult变量内部的generateMethods方法?

为什么?

提问于
用户回答回答于

resulttemplate内部变量generateMethods函数是从外面宣称的那些不同,并且是局部的功能。可以将它们声明为全局变量$

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

扫码关注云+社区