Alessandro Dias

O Que é O Splat Operator Do Ruby?

| Comments

Esses dias olhando código no GitHub vi um trecho como esse: def example(*b) O que esse código faz não vem ao caso, mas olhei o *b e pensei, oque que é esse * antes da variável me veio na hora ponteiro, mas ruby não possui ponteiros, então oque *b faz? pesquisei sobre e resumindo é a sintaxe para splat operator em ruby, ex:

1
2
3
4
5
6
7
8
def example(*b)
  puts b
end

example 1,2,3,4 # => 1 2 3 4

arr = [5,6,7,8]
example *arr # => 5 6 7 8

na ultima linha o *arr faz com que cada item do array seja passado como parâmetro para o método example, você pode usar dessa forma também.

1
2
3
4
5
6
def example2(v1,v2,3)
  puts v1,v2,v3
end

arr = [2, 3, 1]
example2 *arr # => 2 3 1

Nessa segunda abordagem você de ter cuidado para que a quantidade de elementos no array seja igual a quantidade de parâmetros requeridos pelo método.

Outra forma válida é o próximo exemplo:

1
2
3
4
5
6
7
def example3(v1,*v2)
  puts v2
end

arr = [2, 3, 1]

example3 *arr #=> 3 1

Nesse caso o primeiro valor da variavel arr é atribuido ao primeiro parâmetro e os demais ao parâmetro v2.

Comments