gpt4 book ai didi

scala - Any 类型的表达式不符合预期的 type_$1

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

我在理解 Scala 的类型系统时遇到了问题。

class A[T](var value: T)
class B[T](val a: A[T], var newValue: T)

val list = new MutableList[B[_]]()
val a: A[Int] = new A(10)
val b: B[Int] = new B(a, 11)
list += b

val someB = list.head
someB.a.value = someB.newValue

编译后我看到错误:

Error:(12, 24) type mismatch;
found : A$A36.this.someB.newValue.type (with underlying type _$1)
required: _$1
someB.a.value = someB.newValue
^

someB.a.valuesomeB.newValue 具有相同的类型,但 Scala 的编译器实际上并不这么认为。如何修复此错误?

最佳答案

不要指望编译器找出两个存在性是相同的,即使它们显然必须是相同的。解决方法:

  1. 使用类型变量模式:

    list.head match {
    case someB: B[a] => someB.a.value = someB.newValue
    }
  2. 提取方法:

    def setValue[A](b: B[A]) = b.a.value = b.newValue
    setValue(someB)

关于scala - Any 类型的表达式不符合预期的 type_$1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37860513/

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