小编jam*_*ing的帖子

如何防止 Scala 函数接收“null”作为参数

我有一个带有这个签名的 Scala 方法:

  def m (map: Map [String, _])
Run Code Online (Sandbox Code Playgroud)

我想 Map 是一种引用类型,因此,我可以调用m传递null

  m (null) // Allowed call
Run Code Online (Sandbox Code Playgroud)

编译器有什么办法不允许null某些方法调用吗?Kotlin 等其他语言通过明确说明参数可以为 null 来实现这一点:http : //kotlinlang.org/docs/reference/null-safety.html

Scala 中有类似的东西吗?

编辑:感谢您的评论。我知道“空”引用是一个运行时问题,但其他类型系统的其他语言会在编译时处理这个问题。

我只想知道 Scala 中是否也有方法(我开始使用该语言)。检查评论、答案和Scala 类型层次结构,我认为这是不可能的。

对于值对象(如不可变集合和案例类),避免 'null' 可能是有意义的(但是它们扩展AnyRef)。

我可以尝试避免使用“null”,但例如 Map.get 如果找不到键则返回“null”,因此我必须处理这个问题。

关于Map[String, _]它是一个异构映射,可以将其视为一个 JSON 对象。我可以用一种不同的、更像 Scala 的方式来处理这个问题吗?

谢谢!

scala scala-2.11

1
推荐指数
1
解决办法
608
查看次数

标签 统计

scala ×1

scala-2.11 ×1