gpt4 book ai didi

scala - '#' 在类型参数中是什么意思?

转载 作者:行者123 更新时间:2023-12-04 20:50:21 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Why does one select Scala type members with a hash instead of a dot?



我有时会看到一个类型参数,如:
class Test[K] {
type T = Foo[K#Bar]
}

有人可以解释一下这个类型参数中的“#”是什么意思吗?是否对 K 有某种限制? ?

最佳答案

不,# 是类型投影。但是,在您的情况下,这不起作用,因为 K 没有定义任何 BAR 类型。

trait A  { 
type T
def apply():T
}

trait MyClass[X<:A] {
type SomeType = X#T
def applySeq():Traversable[SomeType]
}


class AImpl extends A {
type T=Int
def apply():Int = 10
}

class MyClassImpl extends MyClass[AImpl] {
def applySeq(): Traversable[SomeType] = List(10)
}

这基本上可以让您在 MyClass 中的 A 中使用类型 T 。

事实上,还有以下编译:
class MyClassImpl extends MyClass[AImpl] {def applySeq(): Traversable[Int] = List(10)}

关于scala - '#' 在类型参数中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11427864/

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