gpt4 book ai didi

Scala 抽象类实例

转载 作者:行者123 更新时间:2023-12-01 09:12:41 27 4
gpt4 key购买 nike

我是 Scala 新手。我对 List 类有疑问。这是一个抽象且密封的类。这意味着无法实例化,也无法扩展。那么它的用途是什么呢?像下面这样的东西怎么可能有效?

val myList = List(1,2,3)

myList 是对 List 对象实例的引用吗?另外,如果 productElement 是一个抽象方法,如何实现?

谢谢。

最佳答案

sealed 意味着它不能扩展到定义它的文件之外。列表是密封的,但它确实在同一个文件中定义了 2 个非抽象子类:Nil:: 表示一个空列表分别是一个非空列表。

当您调用 List(1,2,3) 时,您并没有真正直接实例化 List 类。它是 List.apply(1, 2, 3) 的语法糖,它调用 List 对象上的 apply 方法(与List 类)。该方法(技术上通过某种间接方式)最终生成 Nil:: 的实例。

您可以在此处查看子类列表: https://github.com/scala/scala/blob/2.13.x/src/library/scala/collection/immutable/List.scala#L547 https://github.com/scala/scala/blob/2.13.x/src/library/scala/collection/immutable/List.scala#L554

您不需要实现 productElement,它是由 scala 编译器为所有案例类创建的。

关于Scala 抽象类实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51011380/

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