람다 함수 2부
Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 55번째.
한 줄 람다는 삼항 연산자를 사용해 결과를 선택할 수 있습니다. value_if_true if condition else value_if_false:
var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # Adult두 가지보다 많은 경우에는 else 뒤에 두 번째 삼항 연산자를 연결하거나, if와 elif를 사용해 람다를 블록으로 작성하세요:
var grade = func(score):
if score == 100:
return "Perfect"
elif score >= 60:
return "Pass"
return "Fail"
print(grade.call(75)) # Pass람다는 값이므로 함수에 전달할 수 있습니다. 매개변수의 타입을 Callable로 선언하고 call()로 실행하세요:
func apply_twice(fn: Callable, value):
return fn.call(fn.call(value))print(apply_twice(func(n): return n + 3, 1)) # 7이름이 지정된 함수도 같은 방식으로 전달할 수 있습니다. apply_twice(double, 5)처럼 괄호 없이 이름을 작성하세요.
내장 메서드도 함수를 인수로 받습니다. sort_custom()은 두 요소를 받아 첫 번째 요소가 먼저 와야 할 때 true를 반환하는 람다를 사용해 배열을 정렬합니다:
var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]람다는 주변의 지역 변수를 읽을 수 있지만, 생성될 때 그 값의 복사본을 가져옵니다. 이후에 이러한 변수를 변경해도 람다에는 반영되지 않으며, 람다 내부에서 변수에 값을 할당해도 외부의 변수는 바뀌지 않습니다.
챌린지
쉬움프로그램은 정수를 읽습니다. 람다를 만들고 categorize_number라는 변수에 저장하세요. 이 람다는 숫자 하나를 받아 다음을 반환합니다.
- 숫자가
0보다 크면Positive - 숫자가
0이면Zero - 숫자가
0보다 작으면Negative
읽은 숫자를 인수로 전달해 호출하고 결과를 출력하세요. 입력이 10이면 출력은 다음과 같습니다.
Positive직접 해보기
extends Node
func _ready():
var number := int(OS.read_string_from_stdin())
# 여기에서 람다 categorize_number를 만드세요
# number를 인자로 전달해 호출하고 결과를 출력하세요
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러