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?

Foi útil?

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 "*"

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top