Ruby, "unless"키워드

4098 단어 rubybeginners
원래 여기에 게시된 기사 : https://bootrails.com/blog/ruby-unless

"if else "제어 흐름에 익숙할 수도 있지만 이러한 명령문을 작성하는 시각적으로 더 나은 방법이 있을 수 있는 특정 상황이 있습니다. 여기에서는 Ruby의 unless 키워드를 통해 이를 달성하는 방법과 이를 사용할 수 있는 다양한 방법에 대해 설명합니다.

이미 알고 계시지 않는 이상...


if 문을 사용할 때 조건이 참인지 여부를 확인하려고 합니다. 참이면 코드 블록을 실행합니다. false이면 코드가 실행되지 않습니다. 간단히 말해서 if 진실 값을 확인합니다. 다른 많은 언어처럼.
unless는 이것의 정반대라고 생각할 수 있습니다. unlessif 키워드를 대체할 수 있지만 거짓 값을 검사하고 검사하는 조건이 거짓이면 코드를 실행합니다.
이것은 구문적으로 다음과 같습니다.

puts "Passed" if score > 50  



if score > 50  
  puts "Passed"  
end  


된다

puts "Passed" unless score < 50  

unless score < 50  
  puts "Passed"  
end  


보시다시피 유일한 차이점은 이제 조건을 변경해야 한다는 것입니다. 따라서 unlessif 의 정반대입니다.

왜 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  


수정자로



마지막 예에서 unlessif 와 유사한 수정자로 사용될 수도 있다는 것을 눈치채셨을 것입니다.

이 샘플에서:

unless score < 50  
  puts "Passed"  
end  


된다

puts "Passed" unless score < 50  


왼쪽은 then 조건(실행될 코드)으로 동작하고 오른쪽은 테스트 조건으로 동작합니다.

메모


else 문에서 unless를 사용하는 것이 완전히 가능하더라도 이 작업을 피하고 else 조건이 필요할 때 if 키워드를 사용하는 것을 선호하는 것이 모범 사례에서 제안됩니다. elseunless와 함께 사용하면 읽기에 혼란스러운 제어 흐름이 생성될 수 있기 때문입니다. 예를 들어:

# works, but not advised  
unless passed?  
  puts 'failed'  
else  
  puts 'passed'  
end  


개인적인 생각



처음에는 unless 분명히 반직관적입니다. 추가 두통 없이 매일 사용하기까지 시간이 좀 걸렸습니다. 그러나 이 키워드는 Ruby가 달성하려는 가독성의 좋은 예입니다.

좋은 웹페이지 즐겨찾기