scala - Scala 方法调用中的花括号

标签 scala

这个问题在这里已经有了答案:





Why use curly braces over parentheses?

(3 个回答)


3年前关闭。




在 Scala 中,我们可以有:

println { "Hello, world!" }



从“Scala 编程”一书中:

The purpose of this ability to substitute curly braces for parentheses for passing in one argument is to enable client programmers to write function literals between curly braces. This can make a method call feel more like a control abstraction.



这个声明是什么意思?

最佳答案

这是仅用于外观和感觉的语法糖。当一个函数接受一个函数作为参数时

def doWith[A, B](todo: A => B): B = ???

你通常必须这样称呼它
doWith( input => ... )
// or even
doWith({ input => ... })

在scala中,允许用大括号替换括号,所以
doWith { input =>
  ...
}

具有控制结构的外观,如
if (...) {
  ...
}

恕我直言,这使得调用诸如“map”或“collect”之类的高阶函数更具可读性:
someCollection.map { elem =>
  ...
  ...
}

本质上与
someCollection.map({ elem =>
  ...
  ...
})

用更少的字符。

关于scala - Scala 方法调用中的花括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49706714/

相关文章:

scala - 在宏扩展时获取封闭类实例

java - 自动将 Scala 代码转换为 Java 代码

multithreading - 在 Scala 中包装不可变集合并维护线程安全?

scala - 持续调度

scala - Play 框架 - Scala,方法被定义两次

scala - containTheSameElementsAs 如何在 specs2 中工作

Scala 类型推断限制

scala - 使用 Spark Streaming 上下文时如何将 Seq 转换为 RDD

scala - RDD 到 Dataframe 的转换

scala - Slick:为什么我要将 "Unit"保存到我的数据库中?