Rot*_*sor 5 scope scala inner-classes path-dependent-type
TL&DR:是否可以(本地?)禁用路径依赖类型?我想发出一个类似的单一import语句import x._
,但要C
引用X#C
而不是x.C
(X
作为类型x
)?
我有一堆类型:
class Button[M] { ... }
class Label[M] { ... }
...
Run Code Online (Sandbox Code Playgroud)
我碰巧使用它们将相同类型的参数传递给所有这些:
class UseSite[M] (
btn1 : Button[M]
, btn2 : Button[M]
, lbl1 : Label[M]) {
...
}
Run Code Online (Sandbox Code Playgroud)
我认为包装所有这些类型是很好的,所以我只需要传递一次类型参数:
class Swing[M] {
class Button { ... }
class Label { ...}
}
Run Code Online (Sandbox Code Playgroud)
然后在使用网站上我希望能够这样做:
class WithSwing[M] {
val swing = new Swing[M]
import swing._
class UseSite(
btn1 : Button
, btn2 : Button
, lbl1 : Label) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
但是,由于路径依赖类型,这不能正常工作:Button
引用swing.Button
而不是Swing[M]#Button
外部代码很难将正确的参数传递给UseSite
构造函数.
是否有一个很好的方式来Button
参考Swing[M]#Button
而不是swing.Button
?
人们可能会想象类似的事情
import Swing[M]#_
Run Code Online (Sandbox Code Playgroud)
将 type 的所有类型成员Swing[M]
带入作用域,但这不存在(import
需要一个值,而不是类型)。出于实际目的,如何使用类型别名来减少样板文件,
type S = Swing[M]
val b: S#Button = ... // Shorter than Swing[M]#Button
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
211 次 |
最近记录: |