隐含点和括号的Scala优先级
下面的“括号”是什么意思 和你的一样吗隐含点和括号的Scala优先级,scala,operator-precedence,Scala,Operator Precedence,下面的“括号”是什么意思 和你的一样吗 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 } mk
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(", ")
val words = List("foo", "bar", "baz")
val phrase =
"These are upper case: " + (words map { _.toUpperCase } mkString ", ")
以字母开头的运算符优先级最低<代码>+的优先级较低,但高于
map
或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
有关更多信息,请参见我的另一个答案:从技术上讲,赋值运算符的优先级更低,因此DSL经常使用它。