Как определить, запускается ли модуль scala как скрипт - PullRequest
4 голосов
/ 19 августа 2011

Как определить, открыт ли модуль Scala как скрипт или он регулярно импортируется?

Этот вопрос относится к той же проблеме, что и предыдущий вопрос по Python:
как определить, импортируется ли скрипт Python как модуль или запускается как скрипт?
но для Скала

Ответы [ 4 ]

2 голосов
/ 19 августа 2011

Если вам просто нужен быстрый взлом для личного использования, вы можете запустить интерпретатор Scala с помощью скрипта оболочки, который также устанавливает переменную окружения, указывающую, что интерпретатор работает.разница между Scala и Python делает вопрос несколько спорным: в Scala выражения кода не могут отображаться на верхнем уровне, если это не скрипт Scala.Таким образом, вы никогда не будете иметь двусмысленности в написании скрипта Scala, а потом будете думать, выполняется ли он каким-либо другим способом.

1 голос
/ 20 августа 2011

Все модули Scala импортируются регулярно, потому что нет такой вещи, как открытие в виде скрипта.

0 голосов
/ 20 августа 2011

Грязный хак может быть скинуть и исключить и получить след.Затем вы можете проверить его, чтобы попытаться угадать контекст.Например, такой метод, как:

def stackTrace: Array[StackTraceElement] =
  try {
    1/0 // cause exception
    Array() //Never executed
  } catch {
    case e: Exception => e.getStackTrace
  }

Возвращает полную трассировку стека в виде массива StackTraceElement.

.и я не вижу ситуации, в которой это может стоить того ...

0 голосов
/ 19 августа 2011

Насколько мне известно, у Scala нет эквивалента __main__ в Python, поэтому это нельзя сделать таким же образом. Но я утверждаю, что вы все равно не должны этого делать - просто напишите тесты для вашего модуля или напишите скрипт, который импортирует модуль.

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