Existe alguma possibilidade de retornar vários valores do método? Algo assim:
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
>>
prompt do irb irá embora.def foo_and_bar; ['foo', 'bar']; end
Ruby tem uma forma limitada de ligação de desestruturação:
Ele também tem uma forma limitada de vinculação de estruturação:
Você pode combinar essas duas formas da seguinte maneira:
Existem várias outras coisas que você pode fazer com vinculação de desestruturação / estruturação. Eu não mostrei usando o operador splat (
*
) no lado direito. Não mostrei aninhamento (usando parênteses). Não mostrei que você pode usar o bind de desestruturação na lista de parâmetros de um bloco ou método.Aqui está apenas um aperitivo:
fonte
Embora retornar vários valores geralmente seja útil, geralmente acho que é um ponteiro para um novo requisito de objeto.
Ou seja, geralmente acho que esses valores de retorno estão intimamente ligados em significado / contexto e são transmitidos como tal. Então, nesses casos, eu criaria um novo objeto para uni-los. É um cheiro de código específico que aprendi a reconhecer.
fonte
chunk
não existiriam. Excelente princípio. Cheiro de código, de fato. Rock on.Você pode conseguir isso retornando uma matriz também, como
que parece funcionalmente equivalente a
fonte