누구든지 if
과 unless
의 차이점을 언제 설명 할 수 있습니까?차이 - 제외/
Q
차이 - 제외/
25
A
답변
44
unless
은 단지 부정형 if
입니다. 즉, 조건이 이 아니고이 아닌 경우 포함 된 내용을 실행합니다.
unless foo?
# blabla
end
단순히 정말,
그것은 당신이 쉽게 읽을 수 무엇을 발견의 모든 문제입니다if !foo?
# blabla
end
을 의미한다.
5
unless
은 간단히 if not
과 같습니다. 당신이 사용하면 개인적인 취향입니다.
2
if
과 unless
의 차이는 서로의 정확한 반대 있다는 것입니다 :
if
이 조건하는 다음 블록 및 선택적 다른 블록 소요가, 조건이 참이면 else-block을 평가하고 그렇지 않으면 else- 블록을 평가합니다.unless
은 조건, then-block 및 선택적 else-block을 취하고, then 조건이 거짓이면 else 블록을 사용합니다. 그렇지 않으면 else 블록을 평가합니다.
또는 다른 말로하면 루비에서 영어와 동일한 의미입니다.
+0
사후 조건부에 대해 위의 텍스트가 오해의 소지가 있다고 여겨집니다. (둘 사이의 구별은 정확하지만, 나머지는'then' 블록이 필요하다는 것을 의미하며, 항상'else' 블록을 넣을 수도 있습니다.) – Phrogz
7
'unless'는 하나의 인수가있을 때 나에게 간단하지만 몇 개가있을 때 혼란 스럽습니다. 그리고 &&
대신 ||
을 사용할 경우.
"그렇지 않으면"이 내 뇌에겐 더 힘들지 않습니다. "그렇지 않다면"가 더 쉽습니다.
향후이 코드를 사용하면이 코드를 유지 관리하는 것이 어려워 질 것입니다. 그래서 나는 그렇지 않다.
관련 문제
'comments.empty?'가'if! comments.empty?'보다 멋지지만 else 절과 함께 사용하는 경우 :'comments.empty? then aaa else bbb end'는 역으로 상응하는 것보다 더 혼란 스러울 수 있습니다 :'comments.empty? bbb else aaa end' – Phrogz
Ruby는 Python의 Zen을 따르지 않습니다. "그 중 하나가 있어야하며, 가능하면 한 가지 방법 만 가능합니다." –