Função rubi com número ilimitado de Parâmetros
-
22-08-2019 - |
Pergunta
Como faço para criar uma função de Ruby que não tem um número explícito de parâmetros?
Mais esclarecimentos necessários?
Solução
Use *rest
. aqui está um pouco agradável tutorial .
Outras dicas
Use o *
operador de splat
def foo(a,b,c,*others)
# this function has at least three arguments,
# but might have more
puts a
puts b
puts c
puts others.join(',')
end
foo(1,2,3,4,5,6,7,8,9)
# prints:
# 1
# 2
# 3
# 4,5,6,7,8,9
(Se eu pudesse adicionar um comentário para a resposta aceita, eu iria, mas eu não tenho pontos suficientes.)
Aviso: Tenha cuidado sobre fazer isso por métodos de processamento de dados gerais. É um grande pedaço de açúcar sintaxe, mas não são limites para o número de argumentos que você pode passar para um método antes de receber uma SystemStackError. Eu acertei esse limite usando redis.mapped_mget *keys
. Além disso, o limite vai mudar dependendo de onde você usar o operador de splat. Por exemplo, a execução de alavanca localmente, eu pode splat matrizes de mais de 130.000 elementos de um método. Correndo dentro de um ator Celluloid, porém, esse limite pode ser inferior a 16.000 elementos.
Aqui está um outro artigo sobre o assunto:
www .misuse.org / ciência / 2008/01/30 / passando-múltiplos argumentos-em-ruby-é-seu-amigo
dá alguns exemplos agradáveis ??rolando e desenrolando seus parâmetros usando "*"