【发布时间】:2013-05-20 14:03:54
【问题描述】:
以下两种说法有区别吗?他们达到了同样的目的,对吗?它们是否编译为相同的 Java 代码?它们之间是否存在任何性能差异,或者仅仅是偏好/可读性问题?
for (thing <- things) {
doSome(thing)
}
things.foreach(
thing =>
doSome(thing)
)
【问题讨论】:
-
好问题。我想知道
for是否能够对特定(例如数组)类型应用任何优化。检查 scala -print,如果没有显示任何差异,则检查字节码。 (尝试数组和非数组类型。) -
另外,第二种形式不是通过 additional 调用为 lambda 创建了一个额外的匿名类型吗?这也是第一种形式的情况还是可以省略另一个函数/方法调用?可能值得将
things.foreach(doSome)(或doSome _,如果它恰好是一种方法)放入混合中进行比较.. -
你知道,你可以同时尝试并比较类文件。
-
@user2246674 这不是针对您的;它针对的是OP,因为没有@标签,所以应该很清楚。与更多关于 SO 的问题相比,更多的用户知道如何独立做更多的事情是 SO 的重点。
标签: scala loops for-loop foreach