Latest web development tutorials

스칼라 패턴 매칭

스칼라기구 일치 강력한 패턴이 또한 널리 이용되고 제공한다.

매칭 패턴은키워드의 경우 시작 각각의 대안의 시리즈를 포함하고 있습니다.각각의 백업 옵션과 표현의 복수의 패턴을 포함하고 있습니다. 화살표 기호=>는 패턴과 표현을 분리한다.

다음은 단순한 패턴 매칭 정수 값의 예이다 :

object Test {
   def main(args: Array[String]) {
      println(matchTest(3))

   }
   def matchTest(x: Int): String = x match {
      case 1 => "one"
      case 2 => "two"
      case _ => "many"
   }
}

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
many

스위치에 대응하는 자바 일치하지만, 선택 식 기록 후에.즉 : 선택기 일치 {대안}.

그들이 일치하는 경우는 사건의 나머지 부분은 계속되지 않습니다 일치가 발견되면, 계산을 완료하기 위해 각 모드를 사용해 작성된 코드와 일치하는 식의 주문.

다음에 우리는 패턴 매칭의 다른 데이터 형식을 보면 :

object Test {
   def main(args: Array[String]) {
      println(matchTest("two"))
      println(matchTest("test"))
      println(matchTest(1))
      println(matchTest(6))

   }
   def matchTest(x: Any): Any = x match {
      case 1 => "one"
      case "two" => 2
      case y: Int => "scala.Int"
      case _ => "many"
   }
}

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
2
many
one
scala.Int

제 1 케이스의 실시 예 1의 정수 값에 해당하고, 두 번째 경우는 두 가지의 문자열 값에 해당하고, 두 번째 경우는 두 가지의 문자열 값에 대응하고, 세 번째 경우는 값이 전부 통과했는지 여부를 결정하기 위해 사용되는 모델의 종류에 대응 유형, isInstanceOf 유형을 결정하기 위해 비교 사용하여 패턴 매칭이 좋다. 네 번째 경우는 그 경기는 다른 경기, 기본에서 유사한 스위치에서 발견되지 않는 기본 전체 경기의 대안을 나타냅니다.


샘플 클래스를 사용하여

클래스 정의 키워드 케이스 샘플 클래스 (케이스 클래스)이다 사용하여 샘플 클래스는 패턴 매칭을위한 최적화 된 특별 클래스이다.

다음은 샘플 클래스의 간단한 예이다 :

object Test {
   def main(args: Array[String]) {
   	val alice = new Person("Alice", 25)
	val bob = new Person("Bob", 32)
   	val charlie = new Person("Charlie", 32)
   
    for (person <- List(alice, bob, charlie)) {
    	person match {
            case Person("Alice", 25) => println("Hi Alice!")
            case Person("Bob", 32) => println("Hi Bob!")
            case Person(name, age) =>
               println("Age: " + age + " year, name: " + name + "?")
         }
      }
   }
   // 样例类
   case class Person(name: String, age: Int)
}

위의 코드의 구현, 출력은 :

$ scalac Test.scala 
$ scala Test
Hi Alice!
Hi Bob!
Age: 32 year, name: Charlie?

당신은 클래스의 예를 선언 할 때, 다음과 같은 절차가 자동으로 발생합니다

  • 명시 적으로 VAR로 선언하지 않는 한 각 매개 변수 생성자, 발되고있다,하지만 권장하지 않습니다;
  • 새 키워드를 사용할 수 없습니다 객체를 구축 할 수 있도록 방법을 관련 개체를 적용하는 단계;
  • 제공 적용 취소 방법은 패턴 매칭 작업 할 수 있습니다;
  • , toString는, 동일 생성 해시 코드와 디스플레이가 이러한 방법에 대한 정의를 표시하지 않는 방법을 복사합니다.