
if
기본 구문: https://watasimaker.tistory.com/37 ← 이 포스트 참고
위 포스트에 대한 보론!
if문은 조건이 참일 때만 실행되고, 참이 아닌 경우는 실행되지 않는다. run하지 않는다.
# Study 1
void main() {
Set<String> director = {'박찬욱','봉준호','나홍진'};
String a = '박찬욱';
if(director.contains(a)) {
print("$a는 영화감독입니다.");
}
} // 박찬욱는 영화감독입니다.
# Study2
void main() {
Set<String> director = {'박찬욱','봉준호','나홍진'};
String a = '박재범';
if(director.contains(a)) {
print("$a는 영화감독입니다.");
}
} //
Study2의 경우, ‘박재범’이라는 값이 Set의 요소가 아니기 때문에 조건문의 값은 false이고, if는 값이 참일 때에만 if 블록을 실행하는 조건문이기 때문에 if 블록을 실행하지 않은 것이다.
GPT에게 물어보니 이 상태는 “조건 미충족으로 인해 분기가 실행되지 않은 상태”라는구만!
핵심은,
if 조건문은 조건이 true일 때만 실행되고, 조건문이 false일 때는 실행되지 않는다!
if는 값을 반환하는 것이 아니라 흐름을 제어하는 것!
개핵심을 간파해버렸다! 나새끼래! 고조 총명하기가 그지 없구마이야!
깨달음을 얻은 기념으로 박재범 영상 하나 보고 가자.
만약 조건식이 참이 아닐 때에도 아무것도 수행하지 않는 것이 아닌, 참이 아닐 때 수행되는 무언가를 원한다면 else 문을 쓰면 된다.
void main() {
Set<String> director = {'박찬욱','봉준호','나홍진'};
String a = '박재범';
if(director.contains(a)) {
print("$a은 영화감독입니다.");
} else {print("$a은 영화감독이 아닙니다.");}
}
// 박재범은 영화감독이 아닙니다.만족스.
switch
어떤 특정 값에 대한 경우를 모두 고려해야 할 때 사용
이거는 직접 보는 게 빠르다.
void main() {
String name = "제니";
switch(name) {
case "로제":
print('저는 로제입니다.');
case "제니":
print('저는 제니입니다.');
case "지수":
print('저는 지수입니다.');
case "리사":
print('저는 리사입니다.');
default:
print('저는 누구일까요?');
}
}
//
저는 제니입니다.만약 default가 없다면 어떻게 될까?
void main() {
String name = "해원";
switch(name) {
case "로제":
print('저는 로제입니다.');
case "제니":
print('저는 제니입니다.');
case "지수":
print('저는 지수입니다.');
case "리사":
print('저는 리사입니다.');
}
}
//
아무것도 실행되지 않는다.
이것은 앞서 본 if문에서 조건이 충족되지 않았을 때와 같은 상황!
조건 미충족으로 인해 분기가 실행되지 않은 상태 인 것이다!
if문에서는 조건을 충족하지 않을 때 else 를 사용하는 것처럼
switch문에서는 default를 사용한다.
조건 표현식
조건문 ? 표현식1 : 표현식2
조건문이 참이면 표현식1을, 조건문이 거짓이면 표현식2를 따른다.
void main() {
String name = "해원";
Set<String> blackpink = {"로제", "제니", "지수", "리사"};
String sentence = blackpink.contains(name) ? ("블랙핑크입니다.") : ("엔믹스입니다");
print(sentence);
}
//
엔믹스입니다.void main() {
String name = "해원";
Set<String> blackpink = {"로제", "제니", "지수", "리사"};
String sentence = blackpink.contains(name) ? "블랙핑크입니다." : "엔믹스입니다";
print(sentence);
}첫 번째 코드에서는 (“블랙핑크입니다.”) : (“엔믹스입니다.”) 라고 작성했고
두 번째 코드에서는 “블랙핑크입니다.” : “엔믹스입니다.”라고 작성했는데
둘 다 정상적으로 작동했다.
() 안에 있는 것이 식이라고 생각해서 작동시키든, 애초에 식이 아니니 지정한 값을 출력하든. 그렇게 된 것 같다. 소소하지만 또 하나 줍줍.
표현식1 ?? 표현식2
표현식1이 null 값을 갖지 않으면 표현식1을, null값을 가지면 표현식2를 따른다.
void main() {
int? a = null;
print(a ?? 2); // 2
int b = 3;
print(b ?? 2); // 3
}이거는 null 값을 갖는 예시를 창의적으로 생각하기 어려워서
강의에서 준 예제를 그대로 사용했다.
그렇지만 나는 포기하지 않지.
재미 없으면 공부를 하지도 않지.
void main() {
Set<String> actor = {"박정민", "구교환", "주진우"};
String name = "침착맨";
bool? isActor(String name, Set<String> actor) {
if (actor.contains(name)) {
return true; // 배우일 때
} return null; // 배우가 아닐 때 null
}
print(isActor(name, actor) ?? "침착맨은 배우가 아닙니다.");
}
//
침착맨은 배우가 아닙니다.이거는 bool을 이용해서 사실 false를 도출해야 하는데, null을 반환하라고 강제로 세팅해서 ㅋㅋㅋㅋ 어떻게든 되게 만든 예시이다.
개깔꼼하고, 요런 짓을 하는 과정에서 훨씬 금방 익숙해지는 듯.
그냥 장난감처럼 갖고 노는 거 최고!ㅋㅋ
오늘은 여기까지.