2017-02-20 2 views
0

Содержание myfile.scala следующим образом:Запуск Scala сценарий с заявлением вне объекта

// println("print this line") 

object myObj { 
     def main(args: Array[String]): Unit = { 
       println("Hello, world!") 
     } 
} 

Если я бегу: scala myfile.scala, он печатает: Hello, world

Если я раскомментировать первый Println STMT и выполнить команду: scala myfile.scala, это только печатает: print this line, и не печатает hello-world stmt.

Почему это так? Я нахожу это очень запутанным. Я пытался искать архивы, но не мог найти ответы.

+3

Этот вопрос не имеет ничего общего с оо или функциональным программированием – puhlen

+0

Это справедливый вопрос, но название совершенно не связано. – pedrofurla

+0

Простым способом добиться этого является расширение приложения myObj. Это будет по существу относиться ко всему содержимому объекта как 'main'. – WillD

ответ

4

Когда команда scala видит в файле инструкцию верхнего уровня (не в классе или объекте), она запускает файл как скрипт, начиная с первой строки и перемещаясь вниз. Основной метод никогда не вызывается, потому что вы его никогда не называете, просто определите его. Когда ваш файл не содержит операторов верхнего уровня, но содержит основной объект, он будет запускать основной метод в качестве точки входа в программу.

Смежные вопросы