¿Existe la posibilidad de devolver varios valores del método? Algo como esto:
def someMethod()
return ["a", 10, SomeObject.new]
end
[a, b, c] = someMethod
def sumdiff(x, y)
return x+y, x-y
end
#=> nil
sumdiff(3, 4)
#=> [7, -1]
a = sumdiff(3,4)
#=> [7, -1]
a
#=> [7, -1]
a,b=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
a,b,c=sumdiff(3,4)
#=> [7, -1]
a
#=> 7
b
#=> -1
c
#=> nil
>>
indicador de irb desaparecerá.def foo_and_bar; ['foo', 'bar']; end
Ruby tiene una forma limitada de enlace de desestructuración:
También tiene una forma limitada de estructuración vinculante:
Puede combinar esas dos formas así:
Hay varias otras cosas que puede hacer con el enlace de desestructuración / estructuración. No mostré el uso del operador splat (
*
) en el lado derecho. No mostré anidación (usando paréntesis). No mostré que se pueda usar el enlace de desestructuración en la lista de parámetros de un bloque o método.Aquí hay solo un aperitivo:
fuente
Si bien devolver varios valores suele ser útil, generalmente encuentro que es un puntero a un nuevo requisito de objeto.
Es decir, generalmente encuentro que esos valores de retorno están estrechamente vinculados en significado / contexto y se transmiten como tales. Entonces, en estos casos, crearía un nuevo objeto para unirlos. Es un olor de código particular que he aprendido a reconocer.
fuente
chunk
no existirían cosas así . Sin embargo, excelente principio. De hecho, huele a código. Rock on.También puede lograr esto devolviendo una matriz, como
que parece funcionalmente equivalente a
fuente