gpt4 book ai didi

scala - 消除与父类(super class)的类字段同名的构造函数参数的歧义

转载 作者:行者123 更新时间:2023-12-03 23:34:20 25 4
gpt4 key购买 nike

在使用 Scala 时,我有一个这样的代码:

class Superclass(var i : Int){}

class Subclass(i : Int) extends Superclass(0) {
print(i)
}

发现print(i)打印出Subclass(i : Int)

的构造函数参数 i

现在,我的问题是:在这种情况下,我如何访问 Superclass 的字段 i

最佳答案

Type ascription可以向上转换 this 的类型,从而有效地消除两个标识符的歧义

class Subclass(i : Int) extends Superclass(0) {
print((this: Superclass).i)
print(i)
}

作为旁注,还存在以下 syntax可以在方法成员的情况下使用(并且可能不为人所知)

super[ClassQualifier]

例如,考虑以下情况

trait A {
def f = "A"
}

trait B extends A {
override def f = "B"
}

class C extends A with B {
println(super[A].f)
println(super[B].f)
println(f)

override def f = "C"
}

new C
// A
// B
// C

关于scala - 消除与父类(super class)的类字段同名的构造函数参数的歧义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62682390/

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