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

文字で始まる演算子の優先順位は最も低くなります。優先順位は低くなりますが、または+より高くなります。それでmapmkString

"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

詳細については、他の回答を参照してください:Scala中置記法で括弧を使用する場合

于 2012-09-27T14:21:39.950 に答える