18차시. State 이해
퀴즈 1 — 덮어쓰기와 이어 붙이기 견주기
reducer가 없을 때와 있을 때의 로그 합치기를 함수로 나누세요.
빈칸 코드에서 시작합니다.
def replace_log(old, new):
pass
def append_log(old, new):
pass결과 보기 (예시 풀이)
def replace_log(old, new):
# reducer가 없을 때입니다. 새로 온 값이 기존 값을 통째로 덮어씁니다.
return new
def append_log(old, new):
# operator.add reducer가 있을 때입니다.
# 리스트끼리 더하면 앞 리스트 뒤에 새 리스트가 이어 붙습니다.
return old + new
# 세 노드가 차례로 log에 한 칸짜리 리스트를 돌려준다고 가정합니다.
updates = [["1단계 완료"], ["2단계 완료"], ["3단계 완료"]]
# 같은 updates를 두 방식으로 합쳐 봅니다.
log_a = []
log_b = []
for up in updates:
log_a = replace_log(log_a, up)
log_b = append_log(log_b, up)
# 확인 1: reducer가 없으면 마지막 값만 남아야 합니다.
print("Reducer 없음:", log_a)
# 확인 2: reducer가 있으면 세 단계가 모두 쌓여야 합니다.
print("Reducer 있음:", log_b)
실행 결과
Reducer 없음: ['3단계 완료']
Reducer 있음: ['1단계 완료', '2단계 완료', '3단계 완료']채점 기준: append_log는 앞 리스트를 유지한 채 뒤를 붙인다.