Scala 映射 isDefinedAt() 与 contains() 方法

标签 scala dictionary

下面是我的HashMap:

val params1 = collection.mutable.HashMap[String, Any]()

params1 += "forCourseId" -> "2"

println(params1.isDefinedAt("forCourseId"))

println(params1.contains("forCourseId"))
isDefinedAt() 和有什么区别& contains()方法?

我需要检查 key 是否存在
主要关心的是,它不会抛出空指针异常。

最佳答案

您可以查看 Scala 源代码。在 MapLike.scala你会看到 isDefinedAt实际上只是调用 contains ,这意味着它们是真正相同的:

def isDefinedAt(key: A) = contains(key)

唯一真正的区别是 contains特定于 Map接口(interface)(特别是在 GenMapLike 上声明),而 isDefinedAt可在所有 PartialFunction 上找到类。
val m: Map[Int,Int] = Map(1 -> 2)
val pf: PartialFunction[Int,Int] = { case 1 => 1 }

m.isDefinedAt(1)  // ok
m.contains(1)     // ok
pf.isDefinedAt(1) // ok
pf.contains(1)    // doesn't compile

关于Scala 映射 isDefinedAt() 与 contains() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35861034/

相关文章:

swing - 在 Scala 中创建 GUI,但没有 Swing/AWT

python - dict 对象不可调用 - Python 3

json - 从 json 合并两个 map[string]interface{}

python - 字典排序的时间复杂度

python - 需要修改版本的 Python 字典

python - 将数据帧值与字典中的键范围进行比较并返回值

scala - 在 Spark Streaming 中,有没有办法检测批处理何时完成?

scala - 如何阅读这个 Scala 声明?

scala - 从 Gatting 表达式中获取字符串

scala - Liftweb 环境中的后台任务