我是 Scala 的绝对初学者,在阅读了一本 Scala 书籍后,应用函数就像“重载 () 运算符”,我开始想知道 tha 是如何定义的。也就是说,运算符 () 将采用括号本身之间的参数,而不是传统的中缀 a () b 表示法。在 Scala 中是否可以定义这种运算符,如果可以,定义语法是什么?谢谢。
问问题
418 次
1 回答
3
正如您在问题中已经说过的那样,您只需通过定义一个名为 的方法(而不是函数)来定义它apply
。
foo(bar, baz)
被翻译成
foo.apply(bar, baz)
所以,只要foo
有apply
正确的数量和类型的方法,这将起作用。
apply
该方法的一些实现示例是伴生对象,它允许您通过调用(实际上只是)和类Array
来构造一个数组,它允许您通过调用(实际上是只是)来访问数组元素。Array(1, 2, 3)
Array.apply(1, 2, 3)
Array
anArray(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 回答