2009-04-02 9 views

Odpowiedz

13

To jest operator "splat". Może być używany do rozbijania tablic i zakresów oraz zbierania wartości podczas przydzielania.

tutaj wartości w przypisania są zbierane:

a, *b = 1,2,3,4 

=> a = 1 
    b = [2,3,4] 

W tym przykładzie, wartości w wewnętrznej tablicy (The [3,4] jeden) jest rozłożonym i zebrano w zawierających tablicy:

a = [1,2, *[3,4]] 

=> a = [1,2,3,4] 

Możesz zdefiniować funkcje, które zbierają argumenty do tablicy:

def foo(*args) 
    p args 
end 

foo(1,2,"three",4) 

=> [1,2,"three",4] 
+1

Dlaczego to zostało odrzucone? Moja odpowiedź nie zawierała szczegółów na temat jednego aspektu, ponieważ nie wiedziałem, który z nich wprowadza zamieszanie w OP, ale jest to świetne rozwiązanie dla operatora. –

8

Well:

  • require pp importuje funkcjonalności ładnego drukowania
  • p to metoda dość drukowanie z varargs, która ślicznotka drukuje każdy argument
  • * oznacza „rozwinąć argumentu do varargs "zamiast traktować go jako pojedynczy argument
  • 1..10 to range sequence syntax w języku Ruby

Czy to wyjaśnia to odpowiednio? Jeśli nie, proszę wyjaśnić, który fragment jest mylący.

+0

+1 dla ac rzetelna i czysta odpowiedź, gdy pojawi się znak 50K ... –

Powiązane problemy