- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道 (implicit ev: Null <:< A1)
的原因是什么?这里:
sealed abstract class Option[+A] extends Product with Serializable {
def orNull[A1 >: A](implicit ev: Null <:< A1): A1 = this getOrElse null
...
}
不会
def orNull[A]: A = this getOrElse null
考虑到它甚至似乎不适用于像
这样的值类型,就足够了Option(1).orNull
但是
Option(1).getOrElse(null)
有吗?
Option
的source code
最佳答案
并非所有 scala 类型都可以为 null。特别是,Any 有两个子项:AnyRef 和 AnyVal。 AnyRef 可以处理 null 类型。 AnyVal 类型可以是 JVM 上的基元,因此不能为 null。隐含的是延迟类型检查,允许 Option[String] 使用 orNull 但不允许 Option[Int]。
注意:Int 被装箱/拆箱的对象/基元的这种二分法在 Scala 中有非常奇怪的表现,例如 null.asInstanceOf[Int] == 0//true。
关于scala - 为什么 Option 的 orNull 方法有这个多余的隐式参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5315361/
据我了解,我们应该避免在 Scala 中使用 null。如果某些字段在逻辑上不合法,不能具有“无值”,那么我们不应该使用 Option 以避免过度使用 Option。 那么让我们看一下代码。我有课 c
Scala 的 Option 类有一个 orNull方法,其签名如下所示。 orNull [A1 >: A](implicit ev : Some(1).orNull :10: error: cou
我想知道 (implicit ev: Null : A](implicit ev: Null <:< A1): A1 = this getOrElse null ... } 不会 def orNu
我是一名优秀的程序员,十分优秀!