
반복문 씹어먹었는 줄 알았는데 아니었네 ㅋㅋㅋ
질문은 이거다.
예제1.
void main() {
for (var i = 1; i < 5; i++) {
print('hello $i');
}
}
/*
hello 1
hello 2
hello 3
hello 4
*/예제1에서는 4번 반복되는 동안 각 회차의 값이 산출된다.
예제2.
void main() {
String message = "hello";
for (var i = 0; i < 5; i++) {
message += '!';
}
print(message);
}
/*
예상
hello!
hello!!
hello!!!
hello!!!!
hello!!!!!
실제 결과
hello!!!!!
*/왜지?
추정하기로는 예제1에서는 print값에 i가 포함되어 있지만, 예제2에서는 i가 포함되어 있지 않기 때문인가 싶다.
그게 무슨 영향이지?
우리의 GPT가 명쾌한 답을 주었다.
예제2를 해부해보자
String message = "hello";
for (var i = 0; i < 5; i++) {
message += '!';
}
print(message);
여기서의 구조는 완전히 다르다.
반복문 안에서는 **message를 수정(누적)**만 한다.
출력(print)은 반복문이 모두 끝난 뒤 1번만 실행된다.
그러니까 실제 반복 중간 결과들은 모두 사라지고,
맨 마지막 상태만 출력되는 거지.아하! 그렇구만!
그렇다면 다시 코드를 수정해보자. 내가 의도한 대로 나온다면 나는 for문은 마스터한거다.
예제3.
void main() {
String message = "hello";
for (var i = 0; i < 5; i++) {
message += '!';
print(message);
}
}
/*
hello!
hello!!
hello!!!
hello!!!!
hello!!!!!
*/관통해버렸쥬?
Share article