0

可能重复:
Scala 的 apply() 方法是如何工作的?

我是 Scala 的绝对初学者,在阅读了一本 Scala 书籍后,应用函数就像“重载 () 运算符”,我开始想知道 tha 是如何定义的。也就是说,运算符 () 将采用括号本身之间的参数,而不是传统的中缀 a () b 表示法。在 Scala 中是否可以定义这种运算符,如果可以,定义语法是什么?谢谢。

4

1 回答 1

3

正如您在问题中已经说过的那样,您只需通过定义一个名为 的方法(而不是函数)来定义它apply

foo(bar, baz)

被翻译成

foo.apply(bar, baz)

所以,只要fooapply正确的数量和类型的方法,这将起作用。

apply该方法的一些实现示例是伴生对象,它允许您通过调用(实际上只是)和类Array来构造一个数组,它允许您通过调用(实际上是只是)来访问数组元素。Array(1, 2, 3)Array.apply(1, 2, 3)ArrayanArray(i)anArray.apply(i)

这类似于 Python,其中函数调用被转换为对__call__运算符的调用或 Ruby,其中表单的表达式foo.(bar, baz)被转换为foo.call(bar, baz).

类似的方法是update

foo(bar) = baz

被翻译成

foo.update(bar, baz)
于 2012-07-28T23:28:09.160 回答