이 코드 줄은 무엇을 의미합니까?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
?
과는 :
나를 혼란스럽게.
답변
이것은 C 삼항 연산자입니다 (Objective-C는 C의 수퍼 세트입니다).
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
의미 적으로
if(inPseudoEditMode) {
label.frame = kLabelIndentedRect;
} else {
label.frame = kLabelRect;
}
첫 번째 요소가없는 3 원 (예 🙂 variable ?: anotherVariable
은(valOrVar != 0) ? valOrVar : anotherValOrVar
답변
삼항 또는 조건부 연산자입니다. 기본 형식은 다음과 같습니다.
condition ? valueIfTrue : valueIfFalse
값이 선택된 경우에만 평가됩니다.
답변
간단히 말해서 논리는
(condition) ? {code for YES} : {code for NO}
답변
배리 워크의 훌륭한 설명을 바탕으로 …
삼항 연산자에서 중요한 것은 if-else가 할 수없는 곳에서 사용할 수 있다는 것입니다. 즉 : 조건 또는 메서드 매개 변수 내부
[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]
… 전 처리기 상수에 크게 사용됩니다.
// in your pch file...
#define statusString (statusBool ? @"Approved" : @"Rejected")
// in your m file...
[NSString stringWithFormat: @"Status: %@", statusString]
따라서 if-else 패턴으로 로컬 변수를 사용하고 해제 할 필요가 없습니다. FTW!
답변
그것은 일반적인 삼항 연산자 입니다. 물음표 앞의 파트가 true이면 콜론 앞의 파트를 평가하여 리턴하고 그렇지 않으면 콜론 뒤의 파트를 평가하여 리턴합니다.
a?b:c
처럼
if(a)
b;
else
c;
답변
이것은 C의 일부이므로 Objective-C에 국한되지 않습니다. if
문장 으로의 번역은 다음과 같습니다 .
if (inPseudoEditMode)
label.frame = kLabelIndentedRec;
else
label.frame = kLabelRect;
답변
if-then-else 문을 작성하는 간단한 형식입니다. 다음 코드와 같은 의미입니다.
if(inPseudoEditMode)
label.frame = kLabelIndentedRect;
else
label.frame = kLabelRect;