gpt4 book ai didi

Scala map 示例未按预期工作

转载 作者:行者123 更新时间:2023-12-02 14:58:43 25 4
gpt4 key购买 nike

我正在做《实用书架编程 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)
()
()
()
()

最佳答案

使用不带等号的左大括号对于返回 Unit 的方法来说是一种神秘的简写。 ( ()Unit 的唯一有效值,这就是您的代码打印 () 的原因。)

def getMarker(color: String) {
if (markers.contains(color)) markers(color) else null
}

更改为

def getMarker(color: String)  = {
if (markers.contains(color)) markers(color) else null
}

或者更好

def getMarker(color: String) = markers.getOrElse(color,null)

关于Scala map 示例未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4008890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com