I am new to Ruby, and it seems that Ruby does support variables defined outside the method being accessed just now when I want to do something:
templat
Local variables are local to the scope they are defined in. That's why they are called local variables, after all!
Ergo, you cannot access them from a different scope. That's the whole point of local variables.
You are declaring local variables, not global ones. See this site for more (simplified) details: http://www.techotopia.com/index.php/Ruby_Variable_Scope
The result
and template
variables inside the generateMethods
function are different from the ones declared outside and are local to that function. You could declare them as global variables with $
:
$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'])
But what's your purpose with this function? I think there's a cleaner way to do this if you can explain your question more.