scala - 您可以为 None 指定类型参数或告诉编译器它是一个 Option[String] 吗?

标签 scala types

我想知道我是否可以在我的代码中写这样的东西:

None[String]

最佳答案

我很惊讶没有人提到 Option.empty 的存在:

scala> Option.empty[String]
res0: Option[String] = None

请注意,在许多情况下,只需使用 None哪里Option[String]预计会正常工作。
或者换句话说,(如 Aleksey Izmailov 所示),以下是正确的:
def f(o: Option[String]) = ...; f(None)

这是因为 None扩展 Option[Nothing] ,所以凭借 Option是协变的(并且 Nothing 是所有其他类型的子类型),None始终与 Option[T] 兼容对于任何 T .

这也是为什么类型归属也是一个很好的选择(对于您确实需要明确选项类型的情况,例如,如果需要驱动类型推断):
scala> None: Option[String]
res0: Option[String] = None

关于scala - 您可以为 None 指定类型参数或告诉编译器它是一个 Option[String] 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24793871/

相关文章:

python - 在 Scala 中如何近似 Python 的 or 运算符来进行集合比较?

scala - 使用 Flink 从 kafka 主题的开头进行消费

scala - 如何让 sbt 在本地 Maven 存储库中查找 scala dist?

c# - 在 C# 中使用类型对象作为泛型的类型参数

oop - 如何在Lua中声明具有类型的变量

java - 集合的通用类型子集合

scala - Spark 2 数据集空值异常

javascript - Javascript 中 Scala 的 "for comprehension"

parsing - Haskell/Parsec : how do I use Text. Parsec.Token with Text.Parsec.Indent(来自 indents 包)

java - Map key/value类型限制,如何关联?