Menu
CoddyTech

가드 절

Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 68번째.

함수에서 여러 검사가 필요할 때, 하나의 if를 다른 if 안에 중첩하면 실제 작업이 점점 더 깊이 들어가게 됩니다:

func buy(gold: int, price: int) -> String:
	if price > 0:
		if gold >= price:
			return "Bought! %d gold left" % (gold - price)
		else:
			return "Not enough gold"
	else:
		return "Invalid price"

가드 절은 이를 반대로 바꿉니다. 함수 맨 위에서 잘못된 경우 하나를 확인하고 return으로 즉시 빠져나옵니다. 가드 다음의 코드는 유효한 값일 때만 실행되며, 중첩이 필요하지 않습니다:

func buy(gold: int, price: int) -> String:
	if price <= 0:
		return "Invalid price"
	if gold < price:
		return "Not enough gold"
	return "Bought! %d gold left" % (gold - price)

buy(50, 30)은 Bought! 20 gold left를 반환하고, buy(10, 30)은 Not enough gold를 반환하며, buy(50, 0)은 Invalid price를 반환합니다.

가드의 순서가 중요합니다. 한 줄을 보호하는 가드는 그 줄보다 앞에 와야 합니다. 숫자를 사용하기 전에 is_valid_int()로 텍스트를 확인하고, 나누기 전에 0인지 확인하세요:

func share(coins: int, players: int) -> int:
	if players <= 0:
		return 0
	return coins / players

-> void 함수에서 가드는 단독으로 사용하는 return입니다. 루프 안에서는 continue가 요소 하나에 대한 가드 역할을 합니다. 유효하지 않은 요소를 건너뛰고 루프는 다음 요소로 계속 진행합니다.

challenge icon

챌린지

쉬움

process_data 함수를 작성하세요. 문자열 text를 받아 문자열을 반환합니다:

  1. text가 정수가 아니면 Input must be a number!을 반환합니다
  2. 숫자가 0이면 Cannot divide by zero!을 반환합니다
  3. 그렇지 않으면 100.0을 숫자로 나누고 소수점 둘째 자리까지 결과를 반환합니다

예를 들어, process_data("8")은 12.50을 반환하고, process_data("-5")는 -20.00을 반환하며, process_data("abc")는 Input must be a number!을 반환합니다.

두 검사를 함수 맨 위에 가드 절로 작성하세요.

직접 해보기

func process_data(text: String):
	# 여기에 코드를 작성하세요
	pass
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러