簡體   English   中英

Scala如何對None數組進行模式匹配

[英]Scala how to pattern match for a None array

對於以下方法,檢查傳入數組是否為None的方法是什么(又名java land,則為null。)

val x = Array(22.0,122,222,322,422,522,622,722,822,922)
def stddev(arr :Array[Double]) =  {
    arr match {
    case  None  => 0
    ..

錯誤是:

<console>:11: error: pattern type is incompatible with expected type;
 found   : None.type
 required: Array[Double]
Note: if you intended to match against the class, try `case _: <none>`
           case  None  => 0
                 ^

null不等於None 您應該將數組包裝在Option

Option(arr) match {
  case Some(a) => ...
  case None => ...
}

Option(null)返回None

更完整的示例:

def printDoubles(arr: Array[Double]) {
    Option(arr) match {
        case Some(Array()) => println("empty array")
        case Some(a) => println(a mkString ", ")
        case None => println("array is null")
    }
}

printDoubles(null) // array is null
printDoubles(Array.empty) // empty array
printDoubles(Array(1.0, 1.1, 1.2)) // 1.0, 1.1, 1.2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM