0Pricing
Scala for Backend Engineering & Functional Programming · 강의

가드와 바인딩

매칭 안의 조건을 다룹니다

가드와 바인딩은(는) 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. match 표현식
  2. 타입과 값 매칭
  3. 가드와 바인딩
  4. 구조 분해
← Scala for Backend Engineering & Functional Programming(으)로 돌아가기