Scala使用同一类的不同模板嵌套对象

Scala使用同一类的不同模板嵌套对象,scala,Scala,我编写了下面的代码,但是我遇到了错误,因为这不是在Scala中实现它的正确方法。我是Scala新手,所以如果你能告诉我如何准确地定义nextObj,以便以后可以初始化它,那就太好了 trait myInterface[A] { } class MyClass[A] extends myInterface[A]{ var myVal:A=_ var nextObj:MyClass[Any]=_ def mapNextObj[B](map_func:A=>B):

我编写了下面的代码,但是我遇到了错误,因为这不是在Scala中实现它的正确方法。我是Scala新手,所以如果你能告诉我如何准确地定义nextObj,以便以后可以初始化它,那就太好了

    trait  myInterface[A]
  {
  }
class MyClass[A] extends myInterface[A]{
  var myVal:A=_
  var nextObj:MyClass[Any]=_

  def mapNextObj[B](map_func:A=>B):myInterface[B]={
    nextObj=new MyClass[B]()
    nextObj.myVal=map_func(myVal)
    nextObj
  }

  def cleanAllLinkedObjects():Unit={
    nextObj.cleanAllLinkedObjects()
    myVal=_
  }
我希望能够在mapNextObj func中初始化nextObj。此外,我需要将nextObj保留为数据成员,因为我希望在某一点上清除所有对象,而在我的主对象中只有第一个对象

我只是举了一个例子,但我想知道如何在Scala中做到这一点

我面临的问题是:

  • 我无法将mapNextObj中的nextObj初始化为MyClass[B]。正在获取:找到必需的MyClass[Any]:MyClass[B]

  • 与1中的错误相同,但与返回代码有关(必需的MyClass[B]找到了MyClass[Any]


  • 我将nextObj的数据类型更改为myInterface。这为我解决了问题

    请显示实际代码和错误。这里有一些专利错误。你的意思是什么?@som snytt-在评论中添加信息这种可变设计在Scala中不是惯用的,你会注意到它们很难编写。如果你能解释一下,那就更好了A你想设计什么,该类将如何被起诉,它解决了哪个问题。基本上在“继续”中,我只想杀死我运行的所有线程,但如果我不保存nextObj,我就无法访问它的线程。我认为,将更容易关注我在本文中编写的示例。@jwvh-这不是问题所在,我更新它是因为你是对的。但我的主要问题是不同的。。