가드와 바인딩
매칭 안의 조건을 다룹니다
가드와 바인딩은(는) CoddyKit의 무료 Scala for Backend Engineering & Functional Programming 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Scala for Backend Engineering & Functional Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
가드란 무엇인가요
가드는 if를 사용하여 케이스에 불리언 조건을 추가합니다. 패턴이 일치하고 동시에 가드가 참일 때만 케이스가 일치합니다.
가드를 사용하면 값에 따라 하나의 패턴을 더 세밀한 여러 케이스로 나눌 수 있습니다.
if 가드 추가하기
패턴 뒤에 가드를 작성합니다. case n if n > 0 =>와 같이 작성할 수 있습니다. 조건이 거짓이면 다음 케이스로 일치 검사가 계속됩니다.
object Main {
def sign(n: Int): String = n match {
case x if x > 0 => "positive"
case x if x < 0 => "negative"
case _ => "zero"
}
def main(args: Array[String]): Unit = {
println(sign(5))
println(sign(-3))
println(sign(0))
}
}바인딩한 후 가드 사용하기
가드에서는 패턴으로 바인딩한 이름을 참조할 수 있습니다. 이렇게 하면 일치한 값의 속성을 검사할 수 있습니다.
object Main {
def fizz(n: Int): String = n match {
case x if x % 15 == 0 => "FizzBuzz"
case x if x % 3 == 0 => "Fizz"
case x if x % 5 == 0 => "Buzz"
case x => x.toString
}
def main(args: Array[String]): Unit = {
println(fizz(15))
println(fizz(9))
println(fizz(7))
}
}범위에 가드 사용하기
리터럴 패턴으로는 직접 표현할 수 없는 범위를 처리할 때 가드가 매우 유용합니다.
object Main {
def band(score: Int): String = score match {
case s if s >= 90 => "A"
case s if s >= 80 => "B"
case s if s >= 70 => "C"
case _ => "F"
}
def main(args: Array[String]): Unit = {
println(band(95))
println(band(83))
println(band(60))
}
}@를 사용한 패턴 바인딩
@ 기호를 사용하면 구조를 패턴으로 일치시키면서 일치한 전체 값을 이름에 바인딩할 수 있습니다.
여기서 whole @ pattern은 pattern과 일치시키고, 동시에 일치한 값을 whole이라고 부른다는 뜻입니다.
object Main {
def main(args: Array[String]): Unit = {
val x: Any = 7
val msg = x match {
case n @ (_: Int) => s"int value is $n"
case _ => "other"
}
println(msg)
}
}컬렉션에서 바인딩하기
@ 바인딩은 구조화된 패턴에서 특히 유용합니다. 예를 들어 목록 전체를 캡처하면서 동시에 목록의 첫 요소도 살펴볼 수 있습니다.
object Main {
def describe(xs: List[Int]): String = xs match {
case all @ (first :: _) => s"starts with $first, full = $all"
case Nil => "empty"
}
def main(args: Array[String]): Unit = {
println(describe(List(1, 2, 3)))
println(describe(Nil))
}
}형식 패턴과 가드 결합하기
형식 패턴과 가드를 함께 사용할 수 있습니다. 먼저 형식을 확인한 다음 불리언 조건을 확인합니다.
object Main {
def label(x: Any): String = x match {
case s: String if s.length > 3 => "long string"
case s: String => "short string"
case _ => "not a string"
}
def main(args: Array[String]): Unit = {
println(label("hello"))
println(label("hi"))
println(label(42))
}
}여러 조건
가드는 불리언 표현식일 뿐이므로 &&와 ||로 조건을 결합할 수 있습니다.
object Main {
def category(age: Int): String = age match {
case a if a >= 13 && a <= 19 => "teen"
case a if a < 13 => "child"
case _ => "adult"
}
def main(args: Array[String]): Unit = {
println(category(15))
println(category(8))
println(category(40))
}
}가드는 다음으로 넘어가게 하지 않습니다
패턴은 일치했지만 가드가 거짓이면 Scala는 같은 패턴의 다음 가드가 아니라 다음 케이스로 넘어갑니다.
모든 가드에 실패한 값을 처리할 수 있도록 뒤에 케이스를 마련하세요.
object Main {
def test(n: Int): String = n match {
case x if x > 100 => "big"
case x => s"not big: $x"
}
def main(args: Array[String]): Unit = {
println(test(200))
println(test(5))
}
}가드와 바인딩을 사용하는 이유
가드와 @ 바인딩을 함께 사용하면 패턴 일치를 표현력 있게 작성할 수 있습니다.
- 가드로 범위나 나눗셈 가능 여부 같은 조건을 추가합니다
@로 값을 구조 분해하면서 전체 값도 캡처합니다- 분기 로직을 간결하고 읽기 쉽게 유지합니다
종합하기
이 예제에서는 값을 바인딩하고, 가드를 확인하고, 대체 처리를 제공합니다.
object Main {
def temp(c: Int): String = c match {
case t if t >= 30 => s"hot ($t)"
case t if t >= 15 => s"mild ($t)"
case t => s"cold ($t)"
}
def main(args: Array[String]): Unit = {
println(temp(35))
println(temp(20))
println(temp(5))
}
}빠른 확인
가드와 바인딩에 대한 이해도를 확인해 보세요.
복습
일치 조건을 더 세밀하게 만드는 방법을 배웠습니다.
- 가드는 패턴 뒤에 오는
if조건입니다 - 가드가 거짓이면 일치 검사가 다음 케이스로 이동합니다
@연산자는 구조를 분해하면서 전체 값을 바인딩합니다- 가드는 형식 패턴 및 불리언 연산자와 결합할 수 있습니다
자주 묻는 질문
“가드와 바인딩” 강의는 무료인가요?
네 — “가드와 바인딩” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 4개의 강의가 포함되어 있습니다.
“가드와 바인딩”에서 뭘 배우나요?
매칭 안의 조건을 다룹니다 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“가드와 바인딩” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.