ejecutar hago esto mucho en javascriptRubí equivalente a una función javascript auto
some_var || some_var = function(){ return "blah"}();
Me pregunto cuál es el equivalente en Ruby podría ser por lo que puedo hacer
some_var ||= # sequence of operations
edición
Me llamó la atención el Proc.new.call
, pero también me encontré con esto en el código de alguien:
a ||= begin
# do some stuff
# return some stuff
end
¿Es esto funcionalmente equivalente al uso de un Proc.new.call
??
edit2 Las personas parecen estar confundidas en cuanto a lo que estoy tratando de lograr. Imagínese esto en javascript:
function someExpensiveFunction(){
# do some really expensive stuff
return "some expensive calculations"
}
a || a = someExpensiveFunction();
establece Obviamente a
una vez ... Las llamadas a funciones caro una vez ... En este caso no me importa acerca de alcance, sólo necesito mi valor de retorno como una secuencia de eventos calculada en lugar de un solo valor
estoy bastante seguro de que mi ejemplo anterior es equivalente a ||= begin; ... end;
...
¿qué estás tratando de lograr exactamente? Ruby tiene un alcance de nivel de bloque, que es diferente del alcance léxico que tiene JavaScript. A menudo verá funciones anónimas en JS para evitar problemas de alcance. – Matt
no me importa el alcance ...solo quiero una sintaxis limpia para establecer una variable usando || = que involucra varias líneas de código – brad