복붙노트

[SCALA] 어떻게 스칼라에서 적절한 널 안전 병합 연산자를 쓰기?

SCALA

어떻게 스칼라에서 적절한 널 안전 병합 연산자를 쓰기?

내가 대답 할 수 있도록 답변을 NPE를 잡아 스택 추적 밖으로 변환 된 이름을 준설하려고 같은 공포 쇼를 포함하는이 같은 질문으로 나오는 볼 데, 나는이 질문을하고있다.

댓글 또는 추가 개선은 환영합니다.

해결법

  1. ==============================

    1.그래서 같이 :

    그래서 같이 :

    case class ?:[T](x: T) {
      def apply(): T = x
      def apply[U >: Null](f: T => U): ?:[U] =
        if (x == null) ?:[U](null)
        else ?:[U](f(x))
    }
    

    그리고 행동 :

    scala> val x = ?:("hel")(_ + "lo ")(_ * 2)(_ + "world")()
    x: java.lang.String = hello hello world
    
    scala> val x = ?:("hel")(_ + "lo ")(_ => (null: String))(_ + "world")()
    x: java.lang.String = null
    
  2. from https://stackoverflow.com/questions/1364361/how-to-write-a-proper-null-safe-coalescing-operator-in-scala by cc-by-sa and MIT license