Scala lambda 风格 (x) => {...} vs { (x) => ... }

Scala lambda style (x) => {...} vs { (x) => ... }

我是 Scala 的新手,正在使用 ReScala 阅读一些示例代码。在该代码中,作者似乎使用两种样式来定义 lambda:

  1. { x => println(x) }
  2. (x => { println(x) })

我假设这两种风格在语义上是等价的。但是我认为第二种风格允许在 lambda 主体中轻松添加额外的语句。

对吗?哪种方式更"idiomatic"? {} 是否打开一个新的词法范围(如在 C 中)也很有趣。

I assume these two styles are semantically equivalent.

However I think the second style allows easy addition of additional statements in the lambda body.

没有。或者,更确切地说,是的,但是第一种样式也是如此。

Which way is more "idiomatic"?

这是基于意见的。意见不一。

It would also be interesting whether {} opens a new lexical scope (like in C) or not.

是的,他们有。