Ruby, "unless"키워드
"
if else
"제어 흐름에 익숙할 수도 있지만 이러한 명령문을 작성하는 시각적으로 더 나은 방법이 있을 수 있는 특정 상황이 있습니다. 여기에서는 Ruby의 unless
키워드를 통해 이를 달성하는 방법과 이를 사용할 수 있는 다양한 방법에 대해 설명합니다.이미 알고 계시지 않는 이상...
if
문을 사용할 때 조건이 참인지 여부를 확인하려고 합니다. 참이면 코드 블록을 실행합니다. false이면 코드가 실행되지 않습니다. 간단히 말해서 if
진실 값을 확인합니다. 다른 많은 언어처럼.unless
는 이것의 정반대라고 생각할 수 있습니다. unless
는 if
키워드를 대체할 수 있지만 거짓 값을 검사하고 검사하는 조건이 거짓이면 코드를 실행합니다.이것은 구문적으로 다음과 같습니다.
puts "Passed" if score > 50
if score > 50
puts "Passed"
end
된다
puts "Passed" unless score < 50
unless score < 50
puts "Passed"
end
보시다시피 유일한 차이점은 이제 조건을 변경해야 한다는 것입니다. 따라서
unless
는 if
의 정반대입니다.왜 Ruby가 이에 대한 키워드를 제공하는지 궁금할 것입니다. 이 방법으로 제어 흐름을 잘 작성하면 더 복잡한 조건에서
not
연산자를 사용하여 조건을 뒤집을 필요가 없으므로 코드의 시각적 매력이 향상됩니다.샘플:
# okay, understandable, but your eye may miss the "!"
do_something if !some_condition
# okay, readable, understandable, but "not" is not always liked by Ruby developers
do_something if not some_condition
# okay, readable, understandable
do_something unless some_condition
수정자로
마지막 예에서
unless
가 if
와 유사한 수정자로 사용될 수도 있다는 것을 눈치채셨을 것입니다.이 샘플에서:
unless score < 50
puts "Passed"
end
된다
puts "Passed" unless score < 50
왼쪽은 then 조건(실행될 코드)으로 동작하고 오른쪽은 테스트 조건으로 동작합니다.
메모
else
문에서 unless
를 사용하는 것이 완전히 가능하더라도 이 작업을 피하고 else 조건이 필요할 때 if
키워드를 사용하는 것을 선호하는 것이 모범 사례에서 제안됩니다. else
를 unless
와 함께 사용하면 읽기에 혼란스러운 제어 흐름이 생성될 수 있기 때문입니다. 예를 들어:# works, but not advised
unless passed?
puts 'failed'
else
puts 'passed'
end
개인적인 생각
처음에는
unless
분명히 반직관적입니다. 추가 두통 없이 매일 사용하기까지 시간이 좀 걸렸습니다. 그러나 이 키워드는 Ruby가 달성하려는 가독성의 좋은 예입니다.
Reference
이 문제에 관하여(Ruby, "unless"키워드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bdavidxyz/ruby-the-unless-keyword-3eif텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)