Menu
CoddyTech

reduce 메서드

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

reduce()는 배열의 모든 요소를 합계, 곱, 가장 큰 요소, 문장 등 하나의 값으로 결합합니다.

var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)
10

두 개의 인수를 받습니다. 함수와 시작 값이며, 여기서는 0입니다. 함수는 지금까지의 결과인 누산기(acc)와 다음 요소를 받습니다. 함수가 반환하는 값은 새 누산기가 됩니다:

  • acc는 0에서 시작합니다
  • 0 + 1은 1, 1 + 2는 3, 3 + 3은 6, 6 + 4는 10입니다
  • 마지막 요소 이후에 reduce()는 누산기를 반환합니다: 10

곱을 구할 때는 1에서 시작합니다. numbers.reduce(func(acc, n): return acc * n, 1)의 결과는 24입니다.

시작 값이 없으면 첫 번째 요소가 시작점이 되고, 함수는 두 번째 요소부터 실행됩니다. 이는 가장 큰 요소를 찾을 때 적합합니다:

var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9

초깃값이 없는 빈 배열에서 reduce()는 null을 반환하므로, 배열이 비어 있을 수 있다면 초깃값을 지정하세요.

누산기는 어떤 타입이든 될 수 있습니다. 시작 값이 ""이면 첫 글자들로 문자열을 만듭니다:

var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # go
challenge icon

챌린지

쉬움

프로그램은 쉼표로 구분된 음이 아닌 정수가 한 줄에 입력되면 이를 읽어 배열 numbers에 저장합니다. 이 부분은 이미 작성되어 있습니다.

각 항목에 reduce()를 사용하여 다음 세 줄을 출력하세요.

  1. 숫자들의 합
  2. 숫자들의 곱
  3. 가장 큰 숫자 (람다 안에 비교식을 작성하고 max()는 호출하지 마세요)

숫자는 항상 하나 이상 입력됩니다. 입력이 3,7,2,8,4인 경우 출력은 다음과 같습니다.

24
1344
8

직접 해보기

extends Node

func _ready():
	var numbers := []
	for part in OS.read_string_from_stdin().split(","):
		numbers.append(int(part))
	# 합계, 곱, 최댓값을 각각 reduce()로 계산해 출력하세요
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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