[英]Ruby can not access variable outside the method?
我是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'])
當我試圖運行它時,我收到錯誤:
主要的未定義局部變量或方法'模板':Object(NameError)
看來我無法訪問generateMethods
方法內部的template
和result
變量?
為什么?
更新:
看來范圍概念與javascript中的不同?
var xx='xx';
function afun(){
console.info(xx);
}
上面的代碼將起作用。
generateMethods
函數中的result
和template
變量與外部聲明的result
和template
變量不同,並且是該函數的本地變量。 您可以使用$
將它們聲明為全局變量:
$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'])
但是這個功能的目的是什么? 如果您能更多地解釋您的問題,我認為有更簡潔的方法可以做到這一點。
您正在聲明局部變量,而不是全局變量。 有關更多(簡化)詳細信息,請訪問此站點: http : //www.techotopia.com/index.php/Ruby_Variable_Scope
局部變量是它們定義的范圍的本地變量。這就是為什么它們被稱為局部變量,畢竟!
因此,您無法從不同的范圍訪問它們。 這是局部變量的整點 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.