9
Regex.MatchData.group (i : Int) : java.lang.String이 Option [String]이 아닌 null을 반환하는 특별한 이유가 있습니까?null을 반환하는 Regex.MatchData : [String] 옵션이 아닌 이유는 무엇입니까?
스칼라에서 null을 처리하는 "스칼라 웨이"가 있습니까?
Regex.MatchData.group (i : Int) : java.lang.String이 Option [String]이 아닌 null을 반환하는 특별한 이유가 있습니까?null을 반환하는 Regex.MatchData : [String] 옵션이 아닌 이유는 무엇입니까?
스칼라에서 null을 처리하는 "스칼라 웨이"가 있습니까?
Java 라이브러리에 대한 얕은 인터페이스이므로 null을 반환합니다. 나는 그것이 빤다라고 생각한다. 그리고 나는 그것에 의해 물렸다.
값이 null 일 수있는 경우 Option(value)
을 스칼라 2.8에 쓸 수 있으며 None
또는 Some(value)
이됩니다. 즉 패턴 매칭 작동하지 않습니다,하지만 당신은 그것에 대해 자신의 추출기 쓸 수 있습니다 :
object Optional {
def unapply[T](a: T) = if (null == a) Some(None) else Some(Some(a))
}
예 :
scala> val a:String = null
a: String = null
scala> a match {
| case Optional(None) => println("Got none")
| case Optional(Some(value)) => println("Got "+value)
| }
Got none
scala> val a = "string"
a: java.lang.String = string
scala> a match {
| case Optional(None) => println("Got none")
| case Optional(Some(value)) => println("Got "+value)
| }
Got string
scala> val a = "5"
a: java.lang.String = 5
scala> a match {
| case Optional(None) => println("Got none")
| case Optional(Some(value)) => println("Got "+value.toInt)
| }
Got 5
난 항상 그 객체 정의 : 패턴 일치 예는 상당히입니다을 확인하는 것을 잊지를 재미있는. –
하나의 노트 만 : 옵션 (값)은 스칼라 2.8에서만 작동합니다. 아니 2.7.x –
사실. 나는 2.8 물건에 태그를 붙이는 것이 좋았다. –