2014-02-22 2 views
2

다음에서 변수 _ (밑줄)은 Array, foo == "foo"bar == "bar"입니다.병렬 할당에서 변수로 밑줄 사용

_, foo, bar = ["", "foo", "bar"] 
_ # => ["", "foo", "bar"] 

밑줄의 의미와 사용 위치를 설명 할 수 있습니까?

+0

'IRB'에서이 트릭이 작동하지 않습니다. 'IRB'에서는 마지막으로 evulatet 변수를 강조하지만, 스크립트에서는 사용되지 않는 변수입니다.이 작업은'IRB'와 스크립트에서 다릅니다. –

+0

@Monk_Code 그것이 나를 위해 일하고있다 – Simone

+0

@imone 전체 주석을보십시오. –

답변

4

를 사용하는 것이 더 좋아 요소 :

a, _, b, _, c = [1, 2, 3, 4, 5] 

a # => 1 
b # => 3 
C# => 5 
    그것보다 더 좋은 이유 나는 '벌거 벗은 플랫'를 호출하는거야 -210
  • 은 (*를 돌보는) 여러 요소

이가 하나의 별표 (*)를 사용하여 여러 요소를 무시하려면 무시 재미있는 약간의 소리 :

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

a # => 1 
b # => 5 

더 다른 관련 일을 알고이 블로그 게시물 Destructuring assignment in Ruby을 읽어보십시오.

2

밑줄은 단순히 거기에있는 변수 할당을위한 자리 표시 자입니다. 귀하의 경우 기본적으로 배열의 첫 번째 값을 무시한다는 의미입니다. 우리가 가지고 있지 않다면 다음과 같이 할 것입니다 :

ignored, foo, bar = ["", "foo", "bar"] 
=> ["", "foo", "bar"] 

그런 다음 아무것도 사용하지 마십시오.

  • 하나 개의 요소 (_를 돌보는) 무시

당신은 을 강조 어떤을 표현하기 위해 재사용 할 수 있습니다 : 그것은 우리가 때로는 두 가지를 병행 할당에서 _

+3

그리고'ruby -w'로 실행할 때 스크립트는 경고를 내지 않을 것입니다. – steenslag

2

다른 변수와 마찬가지로 변수입니다. quux 또는 원하는 다른 이름을 사용할 수 있습니다.

제외 ... 사용하지 않는 로컬 변수 quux에 대한 경고를받는 반면, 이름이 _으로 시작하는 변수에는 경고가 표시되지 않습니다. 이것은 무시하고자하는 변수의 이름으로 _을 사용하기위한 규약의 인코딩입니다.

+0

내가 알지 못하는 경고 사실. 고맙습니다. –

+0

[찾을 수 있습니다] (http://stackoverflow.com/questions/21973537/operator-precedence-of-unary-operators)? –