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函數,該函數對比較函數指定的指定序列進行排序。
相關用法
- Scala String indexOf(String str)用法及代碼示例
- Scala String contentEquals()用法及代碼示例
- Scala Map size()用法及代碼示例
- Scala SortedMap addString()用法及代碼示例
- Scala Iterator addString()用法及代碼示例
- Scala String substring(int beginIndex, int endIndex)用法及代碼示例
- Scala Set &()用法及代碼示例
- Scala Set dropRight()用法及代碼示例
- Scala Set equals()用法及代碼示例
- Scala Set drop()用法及代碼示例
- Scala Set dropWhile()用法及代碼示例
- Scala Set diff()用法及代碼示例
- Scala Set copyToArray()用法及代碼示例
- Scala TreeSet tail()用法及代碼示例
- Scala Iterator slice()用法及代碼示例
注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 Scala | unapplySeq() method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。