Scala trait - внедрить в основной объект - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть черта, и я пытаюсь реализовать ее в Main объекте. Возможно ли это и какова лучшая практика?

trait PrintThis {
  def nowPrint (thing:String)
}

object Main extends PrintThis {
  def main(args: Array[String]): Unit = {

    def nowPrint(thing:String): Unit = {
      println("subject" )
    }

    nowPrint("test")

  }
}


Если это невозможно - это лучший подход (extend trait в другом классе и реализация метода trait внутри другого класса, а затем extend этого класса в Main class и вызов метода)?

trait One {
  def show()
}

class Two extends One {
  def show() {println ("This is a show!") }
}

object Main extends Two {
  def main(args: Array[String]): Unit = {
    show()
  }
}

Или, может быть, лучше создать новый класс внутри Main, а не extending it?

object Main  {
  def main(args: Array[String]): Unit = {
    var pointer:Two = new Two
    pointer.show()
  }
}

1 Ответ

0 голосов
/ 29 апреля 2018

Нет, это не очень хороший подход. Основная функция предназначена для запуска вашего приложения. Зачем вам нужно расширять какой-либо класс из Main? Если вы хотите использовать другие классы, просто вызовите их объекты.

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