2009-11-13 4 views

답변

60

그것은 splat operator입니다. 배열을 매개 변수로 함수로 분할하는 데 종종 사용됩니다.

def my_function(param1, param2, param3) 
    param1 + param2 + param3 
end 

my_values = [2, 3, 5] 

my_function(*my_values) # returns 10 

더 일반적으로는 인수의 임의의 수를 수용하기 위해 사용된다

def my_other_function(to_add, *other_args) 
    other_args.map { |arg| arg + to_add } 
end 

my_other_function(1, 6, 7, 8) # returns [7, 8, 9] 

(두 문장 모두가 작동하지만 플랫없이) 또한 여러 과제에 대한 작동합니다

first, second, third = *my_values 
*my_new_array = 7, 11, 13 

예를 들어,이 둘은 같습니다.

p *1..10 
p 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 
+1

나는 a, b, c = * myvalues로 보입니다. 은 a, b, c = myvalues와 같습니다. 또는이 경우에는 splat 연산자를 암시 적으로 사용하는 루비입니까? –

+0

@ Patrick 예, 한쪽면에 하나의 물체가 있고 다른 한면에 여러 개의 물체가있는 경우 배정은 splat 연산자를 암시합니다. 아주 유용한 예가 아닙니다. – Neall

관련 문제