2013-11-29 3 views
1

에 대한 패턴 일치에 무슨 일이 들어오는 배열이 아무도없는 경우 확인하는 방법 (일명 널 이리저리 자바 랜드 ..)스칼라는 방법 없음 배열 다음과 같은 방법

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 
       ^

답변

4

nullNone과 같지 않습니다. 당신은 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 
+0

확인이 올바른지, 들으. Pls는 질문을 upvote 고려하십시오. – javadba

관련 문제