Skip to content

15장 case classes and pattern matching

kingori edited this page Nov 19, 2011 · 12 revisions

패턴매칭할 클래스에 case키워드를 사용한다.

15.1 A simple example

zeide

간단한 예제로 알아보자.

scala> abstract class Expr
defined class Expr
scala>   case class Var(name: String) extends Expr
defined class Var
scala>   case class Number(num: Double) extends Expr
defined class Number
scala>   case class UnOp(operator: String, arg: Expr) extends Expr
defined class UnOp
scala>   case class BinOp(operator: String,
     |       left: Expr, right: Expr) extends Expr
defined class BinOp

case classes modifier가 주는 문법적 편리함

  • 클래스명으로 팩토리메소드 추가할 수 있다.
  • case 클래스의 파라미터 리스트에 있는 인자들은 모두 val
  • toString, hashCode, equals 메소드의 "natural"구현 사용할 수 있다.
  • copy 메소드를 사용할 수 있다.
  • 패턴매칭을 지원한다.

15.2 Kinds of patterns

15.3 Pattern guards

15.4 Pattern overlaps

15.5 Sealed classes

15.6 The Option type

15.7 Patterns everywhere

15.8 A larger example

15.9 Conclusion

extractor는 chapter.26에서 만날 수 있습니다.

Clone this wiki locally