2011-03-14 3 views
2

배열입니까? 구조와 사용법은 무엇입니까? 왜 Ruby에 존재합니까?Ruby에서이 내용은 무엇이며 왜 존재합니까?

>> Z = x=1 , y =2 , a =3 , b=4 


=> [1,2,3,4] 

왜이 어레이가 초기화를 지원합니까? 잠재적 인 용도가 될 수 있습니까? 왜 Ruby 디자이너는 그러한 난해한 배열 선언을 지원 했습니까?

+2

그것은 루비입니다. 일반적으로 뭔가를 추가 할 수 있었을 때 그들은 그렇게했습니다. 루비는 이런 식으로 많은 것을 가지고 있으며, 거기에있는 누군가가 그들을 사용하기를 좋아하기 때문에 당신은 그들을 모두 알 필요가 있습니다. –

+0

루비에만 국한되지 않습니다. Perl은'@z = ($ a = 1, $ b = 2)'와 매우 유사한 것을 할 수있다. 내 질문은 왜? 더 읽기 어렵지 않고 공간을 절약 할 수 있습니다. –

답변

4

나는 이것이 의도적으로 배열을 초기화하는 방법보다 여러 변수 할당을 수행 할 수있는 부작용이라고 말하고 싶습니다.

루비에서는 배열을 사용하여 여러 값을 동시에 할당 할 수 있으므로 메서드에서 여러 값을 반환 할 수 있습니다. 이것은 배열로 반환됩니다. 또한 부터 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" 
5

그것은 할 수있는 것들 중 하나지만 그 의도는 유지하기가 어려워, 영리함의 얇은 베일 뒤에 무엇을 숨기고 있기 때문에 아마이 안된다.

기본적으로 다른 변수를 초기화하는 동안 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 
+0

'x, y, a, b = Z'를 사용하지 않는 이유는 무엇입니까? 무슨 문제라도 있습니까? 원하는 결과를 얻고 있습니다. – rubyprince

+0

당신도 할 수 있습니다. 다른 변수를 배열로 뽑아 내고 있음을 상기시켜주기 때문에 나는 다른 변수를 선호하지만, 귀하의 마일리지는 다를 수 있습니다. –

+0

ok .. 나는 그것을'a, b = [1, 2]'와 같은 코드 스 니펫에 익숙하기 때문에 물었다. – rubyprince

관련 문제