2017-03-31 2 views
0

오늘 작업중인 일부 사양에서 이와 비슷한 것을 발견했습니다. 서비스가 param이 "true"을 문자열로, true을 TrueClass로 검사하고 있습니다. 그것은 나에게 합당한 것처럼 보이지만 제공된 param 값이 OR의 첫 번째 요소와 같을 때만 true로 평가된다는 것을 알았습니다.Ruby에서 동등 검사가 OR 표현식으로이 방식으로 작동하는 이유는 무엇입니까?

밑에 간단한 예 :

5 == (5 || 6)true

5 == (6 || 5) 평가는 false

왜 평가?

+0

이는 "단락"로 알려져을 작성하는 의미 : 그래서 다른 사람이 언급 한 것처럼, 5 || 6은 5

내가 함께 있다고 가정합니다. '5 || 6 '은'if 5 then 5 else 6 end'와 동일합니다. –

답변

1

(6 || 5) 반환 6 (|| 반환 최초의 진정한 조건),하지 ​​(5) 때문에 :

[2] pry(main)> (6 || 5) 
# => 6 

그래서 5 == (6 || 5)은 물론, 거짓이다 그냥 같은 5 == 6과 같다.

+0

고마워요. 지금 바보가됩니다. 나는 코드를 직접 작성했지만 코드를 이미 잡았을 것이다.하지만 이미 그 코드를 발견했다. 건배! –

0

nilfalse을 제외한 모든 것이 루비에서 사실입니다.

5 == (6 || 5) 
# => false 

실제로

[5, 6].include? 5 
# => true 
+0

감사! 나는 그것을 지금 본다. 어리석은 실수. 건배! –