當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Scala unapplySeq()用法及代碼示例


unapplySeq()方法是提取器方法。它提取特定類型的對象,然後再次將其重建為提取值的序列,並且在編譯時未指定此序列的長度。因此,為了重建包含序列的對象,您需要利用此unapplySeq方法。句法:

def unapplySeq(object:X):Option[Seq[T]]

在這裏,我們有一個X類型的對象,當該對象不匹配時,此方法或者返回None,或者返回包含在Some類中的T類型的提取值的序列。現在,讓我們通過一些示例來了解它。

例:

// Scala program of unapplySeq 
// method 
  
// Creating object 
object GfG 
{ 
  
    // Defining unapplySeq method 
    def unapplySeq(x:Any): Option[Product2[Int,Seq[String]]] = 
    { 
  
        val y = x.asInstanceOf[Author]  
          
        if(x.isInstanceOf[Author])  
        { 
            Some(y.age, y.name) 
        }      
        else
            None 
    }  
  
    // Main method 
    def main(args:Array[String]) = 
    { 
  
        // Creating object for Author 
        val x = new Author 
  
        // Applying Pattern matching 
        x match
        { 
            case GfG(y:Int,_,z:String) =>
  
            // Displays output 
            println("The age of "+z+" is:"+y) 
        } 
  
        // Assigning age and name 
        x.age = 22
        x.name = List("Rahul","Nisha") 
  
        // Again applying Pattern matching 
        x match
        {                              
            case GfG(y:Int,_,z:String) => 
      
            //Displays output 
            println("The age of "+z+" is:"+y) 
        } 
    } 
} 
  
// Creating class for author 
class Author 
{ 
  
    // Assigning age and name 
    var age: Int = 24
    var name: Seq[String] = List("Rohit","Nidhi") 
}
輸出:
The age of Nidhi is:24
The age of Nisha is:22

在這裏,我們在Option中使用了特征Product2,以便將兩個參數傳遞給它。 Product2是兩個元素的笛卡爾積。例子:

// Scala program of using  
//'UnapplySeq' method of  
// Extractors 
  
// Creating object 
object GfG  
{ 
  
    // Main method 
    def main(args: Array[String])  
    { 
        object SortedSeq 
        { 
      
            // Defining unapply method 
            def unapplySeq(x: Seq[Int]) = 
            { 
                if (x == x.sortWith(_ < _))  
      
                { 
                    Some(x)  
                } 
                else None 
            } 
        } 
          
        // Creating a List                      
        val x = List(1,2,3,4,5)  
  
        // Applying pattern matching 
        x match 
        {  
            case SortedSeq(a, b, c, d,e) =>
  
        // Displays output 
        println(List(a, c, e)) 
        }  
    } 
}
輸出:
List(1, 3, 5)

在這裏,我們使用了sortWith函數,該函數對比較函數指定的指定序列進行排序。




相關用法


注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 Scala | unapplySeq() method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。