Tôi mới đến Ruby, và có vẻ như rằng Ruby không biến hỗ trợ định nghĩa bên ngoài phương pháp này được truy cập chỉ là bây giờ khi tôi muốn làm điều gì đó:Ruby không thể truy cập biến ngoài phương thức?
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'])
Khi tôi cố gắng chạy nó tôi đã nhận lỗi:
undefined local variable or method 'template' for main:Object (NameError)
dường như tôi không thể truy cập các biến bên trong phương pháp template
và result
generateMethods
?
Tại sao?
Cập nhật:
Dường như khái niệm phạm vi là khác với những gì có trong javascript?
var xx='xx';
function afun(){
console.info(xx);
}
Mã trên sẽ hoạt động.
Có một câu trả lời phù hợp cho câu hỏi này [ở đây] (http://stackoverflow.com/a/10782889). – starfry