3

以下“括号”如何?

val words = List("foo", "bar", "baz")
val phrase = "These are upper case: " + words map { _.toUpperCase } mkString ", "

是不是一样

val words = List("foo", "bar", "baz")
val phrase = "These are upper case: " + words.map(_.toUpperCase).mkString(", ")

换句话说,隐含的点(“.”)和括号是否与真实的具有相同的优先级?

第一个版本是否与第一个版本相同

val words = List("foo", "bar", "baz")
val phrase =
  "These are upper case: " + (words map { _.toUpperCase } mkString ", ")
4

1 回答 1

4

以字母开头的运算符的优先级最低。+具有低优先级但高于mapor mkString。所以

"These are upper case: " + words map { _.toUpperCase } mkString ", "

应该被解析为:

(("These are upper case: " + words).map{ _.toUpperCase }).mkString(", ")

把它想象成:

v1 + v2 map v3 mkString v4
((v1 + v2) map v3) mkString v4

有关更多信息,请参阅我的其他答案:When to use parenthesis in Scala infix notation

于 2012-09-27T14:21:39.950 回答