加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在scala中写一个正确的无效安全合并运算符?

发布时间:2020-12-16 09:39:45 所属栏目:安全 来源:网络整理
导读:看到了像 this one这样的问题的答案,这些问题涉及恐怖表演,例如试图抓住NPE,并从堆栈跟踪中挖掘出被破坏的名字,我在问这个问题,所以我可以回答。 评论或进一步改进欢迎。 解决方法 像这样: case class ?:[T](x: T) { def apply(): T = x def apply[U :
看到了像 this one这样的问题的答案,这些问题涉及恐怖表演,例如试图抓住NPE,并从堆栈跟踪中挖掘出被破坏的名字,我在问这个问题,所以我可以回答。

评论或进一步改进欢迎。

解决方法

像这样:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读