gpt4 book ai didi

scala - 抽象成员类型的值

转载 作者:行者123 更新时间:2023-12-01 10:53:22 24 4
gpt4 key购买 nike

我正在尝试使用这种代码:

trait Outer {
type Inner

def f(x:Inner) : Void
}

object test {
def apply(o: Outer, i : Outer#Inner) : Void =
o.f(i)
}

最后一行出错了:

type mismatch; found : i.type (with underlying type Outer#Inner) required: o.Inner

如果我将申请的签名更改为

def apply(o: Outer, i : o.Inner) : Void

然后我得到一个错误:

illegal dependent method type

是否有可能让这段代码工作?

最佳答案

您可以利用依赖于方法的类型(参见 What are some compelling use cases for dependent method types? 示例)。这将要求您使用 2 个参数列表:

trait Outer {
type Inner
def f(x:Inner): Unit
}

object test {
def apply( o: Outer )( i : o.Inner) { o.f(i) }
}

关于scala - 抽象成员类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16833539/

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