Вызов основных методов в других объектах в Scala - PullRequest
1 голос
/ 25 июня 2019

Можно ли вызвать метод main в одном объекте из метода main в другом? У меня есть следующие классы, и мне было интересно, как вызвать два отдельных основных метода в рамках одного запуска программы:

object MongoUpload {
  def main(args: Array[String]): Unit = {
    .. upload to Mongo ..
    // Want to upload to Oracle here
  }
}

object OracleUpload {
  def main(args: Array[String]): Unit = {
    .. upload to Oracle
  }
}

Что-нибудь делает main уникальным среди методов? Могу я просто позвонить друг другу?

1 Ответ

3 голосов
/ 25 июня 2019

Ты уверен, что можешь.Как и любой другой метод, main может вызываться между объектами.


object foo {
  def main(args: Array[String]): Unit = {
    println("qux")
  }
}

object bar {
  def main(args: Array[String]): Unit = {
    println("baz")
    foo.main(null)
  }
}

Запуск main в bar дает следующий вывод:

baz
qux

То же самое можно реплицироватьдля основных методов с аргументами, как в следующем примере:

object foo {
  def main(args: Array[String]): Unit = {
    println(args(0) + " " + args(1))
  }
}

object bar {
  def main(args: Array[String]): Unit = {
    ... some processing ...
    foo.main(Array["Hello", "World"])
  }
}

Запуск main в bar дает следующий вывод:

Hello World

Независимо от того, приводит ли это к очисткеи читаемый код это другой вопрос :)

...