2012-08-25 2 views
1
나는 화두의 모두에 대한 답은 아래

루비 :이 두 가지 화두가 난처한 상황에 빠진 한 날

:default_value 

것으로 예상했을 것이다 그러나 정답은 분명히 :false_value입니다

. DEFAULT_VALUE : 첫 번째에서

, 나는 문을 의미하지 않는 한, 제어 문이 unless false 즉 '거짓'입니다

result = :false_value but not if the control statement is false. 

때문에, 결과는 따라서해야 이해합니다. 두 번째 코 안에도 똑같이.

두 경우 모두

def test_unless_statement 
    result = :default_value 
    unless false 
     result = :false_value 
    end 
    assert_equal __, result 
    end 

    def test_unless_statement_modifier 
    result = :default_value 
    result = :false_value unless false 

    assert_equal __, result 
    end 

답변

2

을 설명해주십시오, 정답은 :false_value입니다. 당신은 그것을 이런 식으로 생각할 수 :

unlessif !(...)

unless falseif true

을 의미하거나 이중 부정이 서로 상쇄주의하는 if !(false)을 의미합니다 의미합니다.

+0

은 JavaScript와 같은 모든 언어에서 동일합니까? – Leahcim

+0

"unless"키워드가 있으면 확실합니다. –

+0

너무 반 직관적입니다. 당신의 대답에 따르면, "사실이 아니라면"은 "사실이라면!"을 의미합니다. 그러나 일반 영어에서는 "사실이 아니라면"은 "그것이 사실이 아니라면"을 의미합니다. 나는 프로그래밍이 말한 언어는 아니지만 ... – Leahcim

0

부울 리터럴은 코란을 혼동합니다. 더 좋은 예는 '비어 않는 한 배열을 customers을 인쇄',

p customers unless customers.empty? 

의미입니다. 동등하게,

p customers if customers.size > 0 
관련 문제