Проверьте, выполняется ли Groovy-скрипт напрямую - PullRequest
0 голосов
/ 27 сентября 2018

В Python можно проверить , если скрипт вызывается напрямую , проверив, __name__ == '__init__'.

Есть ли эквивалент в Groovy?

1 Ответ

0 голосов
/ 28 сентября 2018

Я полагаю, что самый простой способ - сравнить текущее имя класса (используя class.simpleName) с фактическим именем исполняемого скрипта файла. Вот пример:

давайте создадим первый класс в файле M.groovy:

class M {
    static main(args){
        def m = new M()
    }
    def M(){
        def thisClass = this.getClass().simpleName
        def callingClass = new File(getClass().protectionDomain.codeSource.location.path).name.with{ it.take(it.lastIndexOf('.')) }
        println("thisClass: ${thisClass}, callingClass: ${callingClass}")
        if (thisClass == callingClass){
            println 'Calling from M class...'
        } else {
            println 'Calling from outside.'
        }
    }
}

Теперь из внешнего класса, например, T.groovy, вы можете вызвать экземпляр класса M: new M().когда вы выполните M.groovy, вы получите:

thisClass: M, callingClass: M
Calling from M class...

, а при запуске groovy T.groovy вы получите:

thisClass: M, callingClass: T
Calling from outside.

Надеюсь, это поможет.

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