下面是我的HashMap:
val params1 = collection.mutable.HashMap[String, Any]()
params1 += "forCourseId" -> "2"
println(params1.isDefinedAt("forCourseId"))
println(params1.contains("forCourseId"))
isDefinedAt()
&之间有什么区别? contains()
方法?
我需要检查密钥是否存在 主要关注的是,它不会抛出空指针异常。
答案 0 :(得分:10)
您可以查看Scala源代码。在MapLike.scala
中,您会看到isDefinedAt
实际上只是在调用contains
,这意味着它们真的相同:
def isDefinedAt(key: A) = contains(key)
唯一真正的区别是contains
特定于Map
界面(特别是在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
课程。
ItemStack[]
答案 1 :(得分:1)
根据Scala文档isDefinedAt
相当于contains
。
此方法实现了特征PartialFunction的抽象方法,相当于contains。
http://www.scala-lang.org/api/current/#scala.collection.mutable.HashMap