gpt4 book ai didi

Scala:仅使用指定的路径相关类型参数调用函数

转载 作者:行者123 更新时间:2023-12-02 03:37:24 24 4
gpt4 key购买 nike

让我们有一个带有内部类的 A 类。

class A {
class InnerA
}

和持有 A 实例的类 Test

class Test(inst: A) {
def someFun(p: inst.InnerA) {} //Neither A#InnerA, Nor inst.type#InnerA
}

现在我需要限制仅使用指定 inst 的 InnerA 类型的参数调用 someFun(测试成员)。 (不是通过 A#InnerA 实现的任何 InnerA 实例)

val a: A = new A
val inna: a.InnerA = new a.InnerA
val test: Test = new Test(a)

但是当我写这段代码时:

test.someFun(inna)

类型检查器警告“类型不匹配,预期:inst.type#InnerA,实际:a.InnerA”

请建议如何做到这一点。


类似但不适合的解决方案形式为

def fun(a: A)(p: a.InnerA) {}

应用方面:A类是Enumeration类,InnerA是Enumeration.Value类。 Test 是我想限制只与指定的枚举一起使用的类。 “inna”是在枚举子类中构造的枚举值的实例。

最佳答案

使用new Test(a),您将丢失a 变为test.inst 的信息。例如以下作品:

class Test(val inst: A) {
def someFun(p: inst.InnerA) = ()
}

val test: Test = new Test(new A)
val inna = new test.inst.InnerA
test.someFun(inna)

关于Scala:仅使用指定的路径相关类型参数调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22536202/

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