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챌린지
쉬움프로그램은 쉼표로 구분된 음이 아닌 정수가 한 줄에 입력되면 이를 읽어 배열 numbers에 저장합니다. 이 부분은 이미 작성되어 있습니다.
각 항목에 reduce()를 사용하여 다음 세 줄을 출력하세요.
- 숫자들의 합
- 숫자들의 곱
- 가장 큰 숫자 (람다 안에 비교식을 작성하고
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()로 계산해 출력하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러