Latest web development tutorials

Scala estrattore (estrattore)

Estrattore è configurato per estrarre i parametri dell'oggetto passato al dall'oggetto.

Scala libreria standard contiene una serie di estrattore predefinito, vedremo grossolanamente.

Scala è un metodo di estrazione oggetto con un unapply di. Metodo unapply considerato applicare metodi invertono: accetta unapply un valori oggetto ed estrarre dall'oggetto, il valore del valore estratto è di solito utilizzato per costruire l'oggetto.

L'esempio seguente mostra l'indirizzo di posta oggetto di estrazione:

object Test {
   def main(args: Array[String]) {
      
      println ("Apply 方法 : " + apply("Zara", "gmail.com"));
      println ("Unapply 方法 : " + unapply("[email protected]"));
      println ("Unapply 方法 : " + unapply("Zara Ali"));

   }
   // 注入方法 (可选)
   def apply(user: String, domain: String) = {
      user +"@"+ domain
   }

   // 提取方法(必选)
   def unapply(str: String): Option[(String, String)] = {
      val parts = str split "@"
      if (parts.length == 2){
         Some(parts(0), parts(1)) 
      }else{
         None
      }
   }
}

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
Apply 方法 : [email protected]
Unapply 方法 : Some((Zara,gmail.com))
Unapply 方法 : None

L'oggetto di cui sopra definisce duemetodi: applicare e metodi unapply.Non abbiamo bisogno di applicare il metodo utilizzando l'operatore new per creare oggetti. Così si può costruire una stringa "[email protected]" dal test dichiarazione ( "Zara", "gmail.com").

Metodo unapply considerato applicare metodi invertono: accetta unapply un valori oggetto ed estrarre dall'oggetto, il valore del valore estratto è di solito utilizzato per costruire l'oggetto. Esempi di metodo che usano per estrarre nome utente e indirizzi di posta elettronica unapply suffisso dall'oggetto.

Il metodo unapply restituisce None in indirizzo di posta elettronica in arrivo al posto di un'istanza di stringa. Il seguente codice mostra:

unapply("[email protected]") 相等于 Some("Zara", "gmail.com")
unapply("Zara Ali") 相等于 None

Utilizza modello di estrazione corrispondenza

Quando abbiamo istanziare una classe, si può prendere a zero o più parametri, il compilatore viene richiamato quando un'istanza del metodo di applicazione. Siamo in grado di definire e applicare il metodo in oggetto di classe.

Come abbiamo accennato prima, unapply utilizzato per estrarre il valore si precisa trovare, al contrario applicare funzionamento. Quando usiamo le istruzioni match nell'oggetto estrazione è, unapply verrà eseguito automaticamente, come segue:

object Test {
   def main(args: Array[String]) {
      
      val x = Test(5)
      println(x)

      x match
      {
         case Test(num) => println(x + " 是 " + num + " 的两倍!")
         //unapply 被调用
         case _ => println("无法计算")
      }

   }
   def apply(x: Int) = x*2
   def unapply(z: Int): Option[Int] = if (z%2==0) Some(z/2) else None
}

L'attuazione del codice di cui sopra, l'output è:

$ scalac Test.scala 
$ scala Test
10
10 是 5 的两倍!