第28講:Scala抽出器Extractor実戦詳細

841 ワード

抽出器は式から値を取得します
第27話のmatchコードも抽出器です
    def match_array(arr : Any) = arr match {
      case Array(x) => println("Array(1):",x) //    1   ,x       
      case Array(x,y) =>  println("Array(2):",x,y) //    2   ,x          
      case Array(x,_*) => println("      :",x) //      ,     
      case Array(_*) => println("      ") //      
     }
     
    match_array(Array(0))
    match_array(Array("spark"))
    match_array(Array("spark","scala"))
    match_array(Array("spark","scala",0,4))

配列内の要素をcaseで定義された定数、例えばx,yに抽出する
正規表現を使用してデータを抽出する抽出器もあります
    val pattern = "([0-9]+) ([a-z]+)".r
    "2016 spark" match {
      case pattern(num,item) => println(num+" "+item)
    }