gpt4 book ai didi

inheritance - “特征A <:B”是什么意思?

转载 作者:行者123 更新时间:2023-12-03 13:47:38 27 4
gpt4 key购买 nike

在Scala中,做什么

trait A <: B


意思?就是一样吗

trait A extends B




编辑添加:我熟悉类型参数的语法,以及 <:在该上下文中的含义。但是,在上面的示例中,在我看来 A是要声明的特征的名称,而不是类型参数。

最佳答案

注意从Scala 2.12.5开始,不赞成将<:用作extends

scala -deprecation -e 'trait B; trait A <: B'
/var/folders/0w/kb0d3rqn4zb9fcc91pxhgn8w0000gn/T/scalacmd2374381600671257557.scala:1: warning: Using `<:` for `extends` is deprecated
trait B; trait A <: B
^
one warning found




似乎可以编译为同一件事。

 ~/code/scratch: scala -Xprint:typer -e 'trait B; trait A <: B'
// snip
abstract trait B extends scala.AnyRef;
abstract trait A extends java.lang.Object with this.B

~/code/scratch: scala -Xprint:typer -e 'trait B; trait A extends B'
// snip
abstract trait B extends scala.AnyRef;
abstract trait A extends java.lang.Object with this.B


规范没有在“ 5.3.3特性”中对此进行解释。但是语法摘要确实提到了这一点。

TraitDef ::= id [TypeParamClause] TraitTemplateOpt 
TraitTemplateOpt ::= Extends TraitTemplate | [[Extends] TemplateBody]
Extends ::= ‘extends’ | ‘<:’


UPDATE在 r14632中引入。使用编译器选项 -Xexperimental会将特征标记为抽象,以与建议的语言功能 Virtual Traits一起使用。如果没有 -Xexperimental,它是“扩展”的同义词,仅适用于特征。

关于inheritance - “特征A <:B”是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2123663/

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