2014-09-14 4 views
0

조건부 할당을 알고 있습니다. 첫 번째 요소가 nil으로 평가되면 두 번째 요소가 사용됩니다. 첫 번째 하지 nil 경우목록에 대한 조건부 할당

irb(main):004:0> nil || 42 
=> 42 

등 만 평가됩니다 두 번째 경로로 목록에 대해 유사한 개념이있다. 말 그대로

[] || [1,2,3] 

을 가진

irb(main):004:0> [] || [1,2,3] 
=> [1, 2, 3] 
+2

나는 없을 것이라고 생각합니다. 이 문제를 한 걸음 물러나시겠습니까? 어쩌면 거기에 더 나은 해결책이 있습니다. – xlembouras

+0

조건문 만 사용하려면 'a.any? && a || [1, 2, 3]'이 효과가 있습니다. 그런 말로하면, @ sawa가 제안한 것처럼 3 진을 사용합니다. –

답변

2

쓸모가 없다, 그래서 당신이 어떤 변수로이 추측 []로 발생할 수있는 a을 말한다. 당신이 할 수있는 최선은 다음과 같습니다

a.empty? ? [1, 2, 3] : a 

이 만족하지 않는, 당신은 시도 길을 따라 주장하는 경우, 추가 방법을 정의 할 필요가있다.

class Array 
    def tweeze; self unless empty? end 
end 

a.tweeze || [1, 2, 3]