我是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'])
Run Code Online (Sandbox Code Playgroud)
当我试图运行它时,我收到错误:
主要的未定义局部变量或方法'模板':Object(NameError)
看来我无法访问template和result变量内部的generateMethods方法?
为什么?
更新:
似乎范围概念与javascript中的不同?
var xx='xx';
function afun(){
console.info(xx);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将起作用.
Dav*_*Xia 14
该result和template内部变量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'])
Run Code Online (Sandbox Code Playgroud)
但是这个功能的目的是什么?如果您能更多地解释您的问题,我认为有更简洁的方法可以做到这一点.
| 归档时间: |
|
| 查看次数: |
19537 次 |
| 最近记录: |