在Scala 2.11中,具有以下代码:
import play.api.libs.json._
...
val data = // read json from file (3)
val JSON: JsValue = Json.parse(data mkString "\n") (4)
val items = JSON \ "items"
for (i <- 0 until 100) yield items(i)for (i <- 0 until 100) yield (JSON \ "items")(i)合并起来,JSON \ "items"这个术语是为每个i求值还是只计算一次?for-expression并行(我不关心项目在列表中的出现顺序),其中items是一个JSON对象数组?发布于 2015-04-21 02:15:12
JSON \ "items" 100次而不是1次,将有100倍的工作要找到这些节点-没有宏伟的回忆录或类似的事情正在进行。相对于执行它的次数,您的成本是O(n),而不是O(1)。但是在任何情况下,对于这个应用程序来说,这种区别是无关紧要的--假设没有外部循环,您没有向我们展示。yield expensiveComputationBasedOn(items(i)),那也许吧。Try,否则使用更高的方法(在调用此方法的方法中)。通常,在最高级别捕获异常,在那里仍然可以提供关于日志消息中发生了什么错误、可以在哪里进行任何故障恢复以及在哪里可以进行调试的足够信息。这既节省了工作,又确保了你捕捉到了所有的东西--甚至是你没有想到的东西。如果是在你的“主”里,好吧。选项不会捕获异常。注意:如果这是针对某堂课的,那么您的老师可能正在寻找本地错误处理,不管如何。https://stackoverflow.com/questions/29758620
复制相似问题