커링과 클로저 조합
클로저를 더 깊이 이해합니다. curry로 인수를 고정하고, 함수를 조합하며, 메모이제이션으로 재사용 가능한 함수형 파이프라인을 만드는 방법을 배웁니다.
커링과 클로저 조합은(는) CoddyKit의 무료 Groovy & Gradle: JVM Automation and Build Engineering 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Groovy & Gradle: JVM Automation and Build Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Groovy & Gradle: JVM Automation and Build Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
Beyond Basic Closures
You already know closures as anonymous blocks of code. Groovy also lets you transform closures themselves — fixing arguments, chaining them, and caching results — for powerful functional patterns.
What Is Currying?
Currying creates a new closure with some arguments pre-filled. The result takes the remaining arguments. This turns a general function into a specialized one.
Using curry()
Call curry to bind the leftmost arguments.
def add = { a, b -> a + b }
def add5 = add.curry(5)
println add5(10)Right and nth Curry
Use rcurry to fix the rightmost argument and ncurry to fix one at a specific index.
def power = { base, exp -> base ** exp }
def square = power.rcurry(2)
println square(9)Composing Closures
The >> and << operators compose closures so the output of one feeds the next, forming a pipeline.
def doubleIt = { it * 2 }
def inc = { it + 1 }
def pipe = doubleIt >> inc
println pipe(5)Order of Composition
f >> g means apply f first then g, while f << g applies g first. Pick the direction that reads naturally.
def pipe2 = doubleIt << inc
println pipe2(5)Memoization
memoize wraps a closure so repeated calls with the same arguments return a cached result instead of recomputing — ideal for expensive pure functions.
def slow = { n -> Thread.sleep(0); n * n }.memoize()
println slow(4)
println slow(4)Bounded Memoization
Variants like memoizeAtMost and memoizeAtLeast cap cache size so memory stays bounded.
def f = { it + 1 }.memoizeAtMost(100)Closures as Strategy Objects
Because closures are first-class, you can store them in maps and select behaviour at runtime — a clean replacement for big switch statements.
def ops = [add: { a, b -> a + b }, mul: { a, b -> a * b }]
println ops.add(2, 3)Trampolining Recursion
For deep recursion, trampoline converts recursive closure calls into a loop, avoiding stack overflow.
def fact
fact = { n, acc = 1 -> n <= 1 ? acc : fact.trampoline(n - 1, acc * n) }.trampoline()
println fact(5)Controlling the Delegate
A closure resolves unqualified names against its delegate. Setting resolveStrategy to DELEGATE_FIRST lets you build DSL blocks where calls target a configured object — the basis of builders.
def c = { name "Alice"; age 30 }
c.resolveStrategy = Closure.DELEGATE_FIRSTQuick Check
Test your closure transformation knowledge.
Recap
You learned advanced closure techniques:
curry/rcurry/ncurrypre-bind arguments>>and<<compose closures into pipelinesmemoizecaches results of pure functions- Closures stored in maps act as runtime strategies
trampolinemakes deep recursion stack-safe
자주 묻는 질문
“커링과 클로저 조합” 강의는 무료인가요?
네 — “커링과 클로저 조합” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Groovy & Gradle: JVM Automation and Build Engineering 강의 전체를 잠금 해제할 수 있습니다. Groovy & Gradle: JVM Automation and Build Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
“커링과 클로저 조합”에서 뭘 배우나요?
클로저를 더 깊이 이해합니다. curry로 인수를 고정하고, 함수를 조합하며, 메모이제이션으로 재사용 가능한 함수형 파이프라인을 만드는 방법을 배웁니다. 브라우저에서 직접 실행하는 실습 코드로 Groovy & Gradle: JVM Automation and Build Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Groovy & Gradle: JVM Automation and Build Engineering을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Groovy & Gradle: JVM Automation and Build Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“커링과 클로저 조합” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Groovy & Gradle: JVM Automation and Build Engineering 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Groovy & Gradle: JVM Automation and Build Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.