una - variable de clase ruby
¿Ruby no puede acceder a la variable fuera del método? (3)
Soy nuevo en Ruby, y parece que Ruby admite variables definidas fuera del método que se está accediendo ahora mismo cuando quiero hacer algo:
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''])
Cuando intenté ejecutarlo me salió el error:
variable local indefinida o método ''plantilla'' para main: Object (NameError)
Parece que no puedo acceder a la template
y la variable de result
del método generateMethods
?
¿Por qué?
Actualizar:
Parece que el concepto de alcance es diferente de lo que está en el javascript?
var xx=''xx'';
function afun(){
console.info(xx);
}
El código anterior funcionará.
Las variables de result
y de template
dentro de la función generateMethods
son diferentes de las declaradas en el exterior y son locales a esa función. Podrías declararlos como variables globales con $
:
$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''])
¿Pero cuál es tu propósito con esta función? Creo que hay una forma más limpia de hacerlo si puede explicar más su pregunta.
Las variables locales son locales al alcance en el que están definidas. ¡Por eso se llaman variables locales , después de todo!
Ergo, no puedes acceder a ellos desde un ámbito diferente. Ese es todo el punto de las variables locales.
Usted está declarando variables locales, no globales. Consulte este sitio para obtener más detalles (simplificados): http://www.techotopia.com/index.php/Ruby_Variable_Scope