如何在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |