14.2. Literały i identyfikatory we wzorcach
Istnieje wiele postaci, jakie mogą przyjmować wzorce występujące w dopasowaniach. Wzorcami użytymi w przykładzie z pliku PatternMatch1.scala są literały liczbowe. Również inne literały mogą być użyte jako wzorce. Wzorcami mogą być również identyfikatory obiektów i wartości niezmiennych. W przypadku stosowania identyfikatorów istnieje dodatkowy warunek — nazwa identyfikatora powinna się zaczynać od dużej litery, a jeśli chcemy dopasować wartość, której identyfikator zaczyna się od małej litery, to należy go umieścić wewnątrz znaków odwrotnego apostrofu `. Identyfikatory zaczynające się z małej litery, nieujęte w takie apostrofy, są we wzorcach traktowane jako zmienne.
Plik PatternsConstants.scala: object abc object ABC def constPattern(value: Any):String = value match { case "abc" => "string abc" case `abc` => "object abc"
case ABC => "object ABC" case 'abc => "symbol abc" case 'a' => "Char a" case 123 => "Int 123" }
Plik PatternsConstants.scala zawiera definicję metody
constPattern, w której wyrażenie match zawiera różnego literały i
identyfikatory. Wzorzec z wiersza
dopasowuje obiekt
abc. Identyfikator tego obiektu został w nim ujęty w odwrotne
apostrofy, gdyż jego nazwa zaczyna się z małej litery.
scala> :load PatternsConstants.scala
Loading PatternsConstants.scala...
defined object abc
defined object ABC
constPattern: (value: Any)String
scala> constPattern("abc")
res0: String = string abc
scala> constPattern(abc)
res1: String = object abc
scala> constPattern(ABC)
res2: String = object ABC
scala> constPattern('abc)
res3: String = symbol abc
scala> constPattern('a')
res4: String = Char a
scala> constPattern(123)
res5: String = Int 123
Plik PatternsConstants.scala:
object abc
object ABC
def constPattern(value: Any):String =
value match {
case "abc" => "string abc"
case `abc` => "object abc" 