下面是我的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/