수색…


배열을 매개 변수 목록으로 강제 변환

배열이 있다고 가정합니다.

pair = ['Jack','Jill']

그리고 두 가지 주장을하는 방법 :

def print_pair (a, b)
  puts "#{a} and #{b} are a good couple!"
end

배열을 전달할 수 있다고 생각할 수도 있습니다.

print_pair(pair) # wrong number of arguments (1 for 2) (ArgumentError)

배열은 두 개가 아닌 하나의 인수이므로 Ruby는 예외를 throw합니다. 개별 요소를 개별적으로 추출 할 수 있습니다.

print_pair(pair[0], pair[1])

또는 splat 연산자를 사용하여 약간의 노력을 덜 수 있습니다.

print_pair(*pair)

변수의 개수

splat 연산자는 배열의 개별 요소를 제거하고이를 목록으로 만듭니다. 이는 가변 인수를 허용하는 메소드를 작성하는 데 가장 일반적으로 사용됩니다.

# First parameter is the subject and the following parameters are their spouses
def print_spouses(person, *spouses)
  spouses.each do |spouse|
    puts "#{person} married #{spouse}."
  end
end

print_spouses('Elizabeth', 'Conrad', 'Michael', 'Mike', 'Eddie', 'Richard', 'John', 'Larry')

배열은 목록의 하나의 항목으로 계산되므로 배열을 전달하려는 경우 호출 측의 splat 연산자도 필요합니다.

bonaparte = ['Napoleon','Joséphine','Marie Louise']
print_spouses(*bonaparte)    


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow