Scala вложенных объектов с разными шаблонами одного класса - PullRequest
0 голосов
/ 08 января 2020

Я написал следующий код, но получаю ошибки, потому что это не правильный способ реализовать его в 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=_
  }

Я хочу иметь возможность инициализировать nextObj на картеСледующийObj fun c. Кроме того, мне нужно сохранить nextObj в качестве члена данных, потому что я хочу очистить все объекты в какой-то момент, пока у меня в основном только первый объект Obj.

Я использовал только пример, но я пытаюсь получить представление о том, как я могу сделать что-то подобное в Scala.

Проблемы, с которыми я сталкиваюсь:

  1. Я не могу инициализировать nextObj в mapNextObj как МойКласс [B]. Получение: требуется MyClass [Any] Найдено: MyClass [B]

  2. Та же ошибка, что и в 1, но в отношении кода возврата (требуется MyClass [B] найден MyClass [Any]

1 Ответ

0 голосов
/ 10 января 2020

Я изменил тип данных nextObj на myInterface. Это решило это для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...