gpt4 book ai didi

Scala RedBlackTree 语法

转载 作者:行者123 更新时间:2023-12-04 14:30:47 27 4
gpt4 key购买 nike

我在看RedBlackTree的来源文件,我偶然发现了 Tree 的定义,我在此处复制了相关部分:

sealed abstract class Tree[A, +B](
@(inline @getter) final val key: A,
@(inline @getter) final val value: B,
@(inline @getter) final val left: Tree[A, B],
@(inline @getter) final val right: Tree[A, B])

我有两个问题:
  • 怎么样@(inline @getter)比较 @inline @getter ?
  • 为什么是val s 合格 final ? (在这种情况下 final 不是多余的吗?)
  • 最佳答案

    @(inline @getter)语法是元注释的一个例子,它告诉编译器 @inline注释应该放在生成的 getter 方法上(而不是构造器参数,这里是默认值):meta annotations
    final将生成的字段和 getter 标记为 final,因此它们不能被子类覆盖。

    这个特殊的组合在这里被用来欺骗 Scala 编译器直接访问 Tree 的字段。实例,而不是调用 getter 并依靠 JVM 优化器来执行正确的内联。不幸的是,Scala 没有提供官方支持的直接使用字段的方式。

    当为 Scala 2.10 优化红黑树时,这提供了最佳性能。查看不可变的 TreeMap/TreeSet pull request对于血腥的细节。

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

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