加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 为什么在括号上使用花括号?

发布时间:2020-12-16 09:25:00 所属栏目:安全 来源:网络整理
导读:在许多Scala示例中,我看到人们在我发现完全奇怪的地方使用花括号,当使用括号可以轻松地编写相同的语句时. 例: lst foreach (x = println(s"the value returned is: $x")) // parenslst foreach {x = println(s"you get the idea,$x")} // braces 我知道你可
在许多Scala示例中,我看到人们在我发现完全奇怪的地方使用花括号,当使用括号可以轻松地编写相同的语句时.

例:

lst foreach (x => println(s"the value returned is: $x")) // parens
lst foreach {x => println(s"you get the idea,$x")} // braces

我知道你可以使用大括号作为括号的替代,只是因为它允许你在多行上写一个语句:

val res = for {
  x <- coll1
  y <- coll2
} yield (x,y)

>所以当它写在一行上时,是否有任何固有的理由使用一个而不是另一个?
>结果最终应该是一样的,还是我错过了什么?
>或者仅仅是风格和/或个人品味的问题?

解决方法

一般来说,在许多情况下,你更喜欢花括号(例如多线表达式,用于理解),但让我们特别谈谈

当它写在一行上时,是否有任何固有的理由使用一个而不是另一个

在第二种情况下,它不仅仅是花括号,而不是括号,它是带有括号括号的花括号. Scala允许你有时省略括号,后面的语法用于访问你在部分函数中得到的细节(即模式匹配),所以

lst foreach {x => println(s"you get the idea,$x")}

实际上是

lst foreach({x => println(s"you get the idea,$x")})

正如我所说,它可以从模式匹配POV中获得:

val map = Map("foo" -> "bar")
map foreach { case (k,v) => println(s"key: $k,value: $v") }
// which is not possible with the usual parenthesis

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读