我正在做“Pragmatic Bookshelf Programming Scala”书中的所有示例。这是一个简单的单例例子,但我们没有弄清楚它的正确性,即来自map的值不会被提取。 你能指出错误吗?斯卡拉地图示例不按预期方式工作
class Marker(val color: String) {
println("Creating " + this)
override def toString(): String = "marker color is " + color
}
和辛格尔顿MarkerFactory是如下
object MarkerFactory {
private val markers = new HashMap[String, Marker];
markers += "red" -> new Marker("red")
markers += "blue" -> new Marker("blue")
markers += "green" -> new Marker("green")
def getMarker(color: String) {
if (markers.contains(color)) markers(color) else null
}
def main(args: Array[String]) {
println(markers)
println((MarkerFactory getMarker "red").toString)
println(MarkerFactory getMarker "blue")
println(MarkerFactory getMarker "red")
println(MarkerFactory getMarker "yellow")
}
}
这样我得到的输出。
Creating marker color is red
Creating marker color is blue
Creating marker color is green
Map(green -> marker color is green, red -> marker color is red, blue -> marker color is blue)
()
()
()
()
的可能重复[何时在Scala方法声明中使用等号?](http://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration) – 2012-04-09 04:43:22