2011-11-30 1 views
1

"bar"를 두 번 쓰지 않고 Ruby에서 이것을 작성하는 더 좋은 방법이 있습니까?기본값 인 Ruby 관용어

foo = bar > 0 ? bar : 1 
+0

나는 8 시간 동안 내 자신의 질문에 대답 할 수는 없지만이 : foo는 = [바는, 1]하지만, 그것은 확실히, 정수의 가정 – dooche

+0

을 .max 나는 그것이 더 낫다고 확신하지 않는다. –

+0

@ miku의 답은 실제로 Ruby의 일반적인 대답입니다. – Nick

답변

4

아니 일반적인 사용 사례 :하지만,

foo = [bar, 1].max 
3
$ irb 

>> x ||= "default" 
=> "default" 

>> x ||= "nothing changes, since x has been defined" 
=> "default" 

X의 값은 "기본"으로 대체되지만, x가 존재하지 않거나 거짓 인 경우에만 가능합니다. 따라서 유스 케이스에 맞는지 확실하지 않습니다. (x > 0).

x ||= "default"x || x = "default"의 줄임말입니다.

+0

기술적으로'x || = "default"'는'x = x || '의 줄임말입니다. "default"는 어쨌든 동일한 것을 의미합니다. –

+1

@ LB : 아니오.'x || x = "기본값". http://www.rubyinside.com/what-rubys-double-pipe-or-equals-really-does-5488.html –

+2

@AndrewGrimm : 방금 정의 된 것을 실행 했습니까? x || = ""# => "할당"','정의 되었습니까? x = x || ""# => "할당"과'정의 되었습니까? x || x = ""# => "표현식". 하지만 네, 맞습니다. 고마워요. –