Scala 中的函数文字是什么?
Scala 中的函数文字是什么以及何时应该使用它们?
What is a function literal in Scala and when should I use them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
Scala 中的函数文字是什么以及何时应该使用它们?
What is a function literal in Scala and when should I use them?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
函数文字是定义函数的替代语法。当您想要将函数作为参数传递给方法(尤其是折叠或过滤操作等高阶函数)但又不想定义单独的函数时,它非常有用。函数文字是匿名的——默认情况下它们没有名称,但您可以通过将它们绑定到变量来给它们命名。函数字面量的定义如下:
您可以将它们绑定到变量:
就像我之前所说,函数字面量对于将参数传递给高阶函数非常有用。它们对于定义嵌套在其他函数中的单行函数或辅助函数也很有用。
A Tour of Scala 为函数文字提供了很好的参考(他们称之为匿名函数) 。
A function literal is an alternate syntax for defining a function. It's useful for when you want to pass a function as an argument to a method (especially a higher-order one like a fold or a filter operation) but you don't want to define a separate function. Function literals are anonymous -- they don't have a name by default, but you can give them a name by binding them to a variable. A function literal is defined like so:
You can bind them to variables:
Like I said before, function literals are useful for passing as arguments to higher-order functions. They're also useful for defining one-liners or helper functions nested within other functions.
A Tour of Scala gives a pretty good reference for function literals (they call them anonymous functions).
将函数文字与 Scala 中其他类型的文字进行比较可能很有用。 文字是表示某些类型的值的符号糖。语言认为特别重要。 Scala 有 整数文字、字符文字、字符串文字等。Scala 将函数视为可在源代码中通过函数文字表示的第一类值。这些函数值属于特殊的 函数类型。例如,
5
是表示Int
类型中的值的整数文字'a'
是表示Char 中的值的字符文字
类型(x: Int) => x + 2
是一个函数文字,表示Int =>; 中的值Int
函数类型文字通常用作匿名值,即不首先将它们绑定到命名变量。这有助于使程序更加简洁,并且适用于文字不可重用的情况。例如:
对比
It might be useful to compare function literals to other kinds of literals in Scala. Literals are notational sugar for representing values of some types the language considers particularly important. Scala has integer literals, character literals, string literals, etc. Scala treats functions as first class values representable in source code by function literals. These function values inhabit a special function type. For example,
5
is an integer literal representing a value inInt
type'a'
is a character literal representing a value inChar
type(x: Int) => x + 2
is a function literal representing a value inInt => Int
function typeLiterals are often used as anonymous values, that is, without bounding them to a named variable first. This helps make the program more concise and is appropriate when the literal is not meant to be reusable. For example:
vs.
Scala 编程,第三版
8.3 一流函数
Programming in Scala, Third Edition
8.3 FIRST-CLASS FUNCTIONS