【问题标题】:How to map method name X to method name Y in Scala like in List如何将方法名称 X 映射到 Scala 中的方法名称 Y 就像在 List 中一样
【发布时间】:2013-10-18 04:28:50
【问题描述】:

参考以下问题的答案:

List.empty vs. List() vs. new List()

Scala 的开发者是如何映射List object 中定义的方法apply[A](xs: A*) 以用作List[A](cs: A*)

他们如何将aListInstance(n: Int) 转换为List 中定义的方法apply(n: Int)(返回列表的第n 个元素)?

在这两种情况下,我都调用了apply() 方法,而没有在我的代码中编写.apply()。它是如何工作的?

【问题讨论】:

    标签: list scala


    【解决方案1】:

    它之所以有效,是因为 Scala 语言规范是这么说的。

    foo(bar)
    

    被翻译成

    foo.apply(bar)
    

    就像

    foo.bar = baz
    

    被翻译成

    foo.bar_=(baz)
    

    foo(bar) = baz
    

    被翻译成

    foo.update(bar, baz)
    

    foo bar baz
    

    被翻译成

    foo.bar(baz)
    

    foo bar_: baz
    

    被翻译成

    baz.bar_:(foo)
    

    等等等等。

    【讨论】: