Latest web development tutorials

Scala pasujące do wzorca

Scala dostarcza potężny mechanizm dopasowania wzorca, jest również powszechnie stosowane.

Wzorzec dopasowania zawiera szereg alternatywnych rozwiązań, z których każda zaczyna się odsprawy kluczowe.Każdy z nich zawiera opcję kopii zapasowej i wzór dla wielu wyrażeń. Strzałka symbol=> oddziela wzorów i wyrażeń.

Poniżej znajduje się prosty wzór dopasowywania wartość całkowita Przykład:

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"
   }
}

Realizacja powyższego kodu, wyjście jest:

$ scalac Test.scala 
$ scala Test
many

dopasować odpowiedni Java w przełączniku, ale napisany po wyrażeniu wyboru.Mianowicie: Selektor mecz {} alternatywy.

Postanowieniem z dnia wyrażenia, aby dopasować kod napisany spróbować każdego trybu, aby zakończyć obliczenia, jeżeli uznają, że jest to przypadek dopasowywania, dopasowując reszta razie nie będzie kontynuowany.

Następnie spojrzeć na inny typ danych dopasowywania wzoru:

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"
   }
}

Realizacja powyższego kodu, wyjście jest:

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

Przykłady pierwszym przypadku odpowiada wartości całkowitej 1, drugi przypadek odpowiada wartości ciągu dwóch, drugi przypadek odpowiada wartości ciągu dwóch, trzeci przypadek odnosi się do typu modelu stosowanego w celu określenia, czy wartość przekazana w całości uy isInstanceOf porównaniu do określenia typu, pasujące do wzorca jest lepsza. Czwarty przypadek wskazuje domyślne alternatywy pełnej meczu, że mecz nie zostanie znaleziony w drugim meczu, podobny przełącznik zaocznego.


Użyj Klasa Sample

Użyj słowa kluczowego przypadek jest definicja klasy jest klasa próbka (klasy przypadków), klasa próbka jest specjalna klasa, zoptymalizowany pod kątem dopasowania wzorca.

Poniżej znajduje się prosty przykład klasy próbki:

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)
}

Realizacja powyższego kodu, wyjście jest:

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

Kiedy deklarujesz przykład klasy, co następuje procedura odbywa się automatycznie:

  • Każdy parametr konstruktora stają val, chyba że wyraźnie zadeklarowane jako var, ale to nie jest zalecane;
  • Zapewnienie zastosowania metod związanych obiektów, dzięki czemu można budować obiekty nie mogą korzystać z nowego słowa kluczowego;
  • O ile metoda Wycofywanie umożliwia dopasowanie wzór może pracować;
  • Generowanie toString, równa, hashCode i kopiować metody, chyba że wyświetlacz pokazuje definicje tych metod.