gpt4 book ai didi

scala - self 类型注释中 this 和 self 之间的区别?

转载 作者:行者123 更新时间:2023-12-03 04:29:23 26 4
gpt4 key购买 nike

在各种 Scala 文献中,我看到一些使用“this”的 self 类型注释,以及其他使用“self”的 self 类型注释:

trait A { this: B => ... }
trait A { self: B => ... }

使用“this”或“self”有什么真正的区别吗?你用什么名字有关系吗?这同样有效吗?

trait A { foo: B => ... }

最佳答案

所有三种形式都是有效的,并且具有将 B 假定为类 Athis 的类型的效果。

前两个变体

trait A { self: B => ... }
trait A { foo: B => ... }

引入 self(分别为 foo)作为特征 Athis 的别名。这对于从内部类访问 this 引用非常有用。 IE。然后,当从类访问特征 Athis 引用时,您可以使用 self 而不是 A.this嵌套在其中。示例:

class MyFrame extends JFrame { frame =>    
getContentPane().add( new JButton( "Hide" ) {
addActionListener( new ActionListener {
def actionPerformed( e: ActionEvent ) {
// this.setVisible( false ) --> shadowed by JButton!
frame.setVisible( false )
}
})
})
}

第三种变体,

trait A { this: B => ... }

不引入this的别名;它只是设置 self 类型。

关于scala - self 类型注释中 this 和 self 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4017357/

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