배열입니까? 구조와 사용법은 무엇입니까? 왜 Ruby에 존재합니까?Ruby에서이 내용은 무엇이며 왜 존재합니까?
>> Z = x=1 , y =2 , a =3 , b=4
=> [1,2,3,4]
왜이 어레이가 초기화를 지원합니까? 잠재적 인 용도가 될 수 있습니까? 왜 Ruby 디자이너는 그러한 난해한 배열 선언을 지원 했습니까?
배열입니까? 구조와 사용법은 무엇입니까? 왜 Ruby에 존재합니까?Ruby에서이 내용은 무엇이며 왜 존재합니까?
>> Z = x=1 , y =2 , a =3 , b=4
=> [1,2,3,4]
왜이 어레이가 초기화를 지원합니까? 잠재적 인 용도가 될 수 있습니까? 왜 Ruby 디자이너는 그러한 난해한 배열 선언을 지원 했습니까?
나는 이것이 의도적으로 배열을 초기화하는 방법보다 여러 변수 할당을 수행 할 수있는 부작용이라고 말하고 싶습니다.
루비에서는 배열을 사용하여 여러 값을 동시에 할당 할 수 있으므로 메서드에서 여러 값을 반환 할 수 있습니다. 이것은 배열로 반환됩니다. 또한 부터 Ruby의 모든 표현에 반환 값이 있으므로 x = 1, y = 2
은 배열의 두 할당 연산에 대한 값도 반환합니다.
ruby-1.9.2-p136 :001 > a, b = 3, 4
=> [3, 4]
ruby-1.9.2-p136 :002 > a
=> 3
ruby-1.9.2-p136 :003 > b
=> 4
ruby-1.9.2-p136 :004 > def my_method
ruby-1.9.2-p136 :005?> return "value1", "value2"
ruby-1.9.2-p136 :006?> end
=> nil
ruby-1.9.2-p136 :007 > my_method
=> ["value1", "value2"]
ruby-1.9.2-p136 :008 > x = my_method
=> ["value1", "value2"]
ruby-1.9.2-p136 :009 > x, y = my_method
=> ["value1", "value2"]
ruby-1.9.2-p136 :010 > x
=> "value1"
ruby-1.9.2-p136 :011 > y
=> "value2"
그것은 할 수있는 것들 중 하나지만 그 의도는 유지하기가 어려워, 영리함의 얇은 베일 뒤에 무엇을 숨기고 있기 때문에 아마이 안된다.
기본적으로 다른 변수를 초기화하는 동안 Z
에 배열을 할당합니다.
Z = x=1 , y =2 , a =3 , b=4 #=> [1, 2, 3, 4]
Z #=> [1, 2, 3, 4]
x #=> 1
개인적으로, 코드 리뷰에서 나는 그것을 다음 중 한 가지 방법을 작성하는 프로그래머를 요청할 것 :
Z = [1, 2, 3, 4]
x, y, a, b = *Z
또는
(x, y, a, b) = Z
'x, y, a, b = Z'를 사용하지 않는 이유는 무엇입니까? 무슨 문제라도 있습니까? 원하는 결과를 얻고 있습니다. – rubyprince
당신도 할 수 있습니다. 다른 변수를 배열로 뽑아 내고 있음을 상기시켜주기 때문에 나는 다른 변수를 선호하지만, 귀하의 마일리지는 다를 수 있습니다. –
ok .. 나는 그것을'a, b = [1, 2]'와 같은 코드 스 니펫에 익숙하기 때문에 물었다. – rubyprince
그것은 루비입니다. 일반적으로 뭔가를 추가 할 수 있었을 때 그들은 그렇게했습니다. 루비는 이런 식으로 많은 것을 가지고 있으며, 거기에있는 누군가가 그들을 사용하기를 좋아하기 때문에 당신은 그들을 모두 알 필요가 있습니다. –
루비에만 국한되지 않습니다. Perl은'@z = ($ a = 1, $ b = 2)'와 매우 유사한 것을 할 수있다. 내 질문은 왜? 더 읽기 어렵지 않고 공간을 절약 할 수 있습니다. –