gpt4 book ai didi

Scala的apply方法

转载 作者:行者123 更新时间:2023-12-02 09:12:00 25 4
gpt4 key购买 nike

我正在 Scala 中构建一个列表,如下所示:

val list1 = List(1,2,3) //This is otherwise: List.apply(1,2,3) ---> A

现在我有下面一行。

list1(1) //which is otherwise list1.apply(1)  ---> B

上面一行返回 2,其类型为 Int。

A 行和 B 行是对 List 类中的 apply 方法的调用。 List类中当然不能出现方法重载。那么编译器根据什么区别对待 A 和 B?

任何人都可以帮助我理解这一点吗?谢谢!

最佳答案

这里有两种不同的类型。在第二个示例中,您在 List 类的实例上调用 apply 实例方法。在第一个示例中,您根本没有调用 List 类上的任何内容,而是调用 List 伴随对象上的 apply 方法。

在行

 val list1 = List(1,2,3)

您可以看出,在这种情况下,您正在调用伴生对象上的方法,因为您没有 List 的实例,并且似乎是在类本身上调用 apply。

关于Scala的apply方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50959516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com