Что такое закрытый эквивалент идиомы Python «if __name__ == '__main__'»?
Я балуюсь clojure и испытываю небольшие затруднения, пытаясь определить clojure (и / или Lisp) эквивалент этой распространенной идиомы Python.
Идиома состоит в том, что в нижней части модуля python часто есть немного тестового кода, а затем оператор, который выполняет код, например:
# mymodule.py
class MyClass(object):
"""Main logic / code for the library lives here"""
pass
def _runTests():
# Code which tests various aspects of MyClass...
mc = MyClass() # etc...
assert 2 + 2 == 4
if __name__ == '__main__': _runTests()
Это полезно для простого специального тестирования. Можно было бы использовать этот модуль, написавfrom mymodule import MyClass
, в таком случае_runTests()
никогда не вызывается, но с фрагментом в конце его также можно запустить, набравpython mymodule.py
прямо из командной строки.
Есть ли эквивалентная идиома в Clojure (и / или общий лисп)? Я не за полнофункциональной библиотекой модульного тестирования (да, но не в этом вопросе), я просто хотел бы включить некоторый код в модуль, который будет запускаться только при определенных обстоятельствах, так что я могу иметь быстрый способ запуска кода, над которым я работал, но все же позволяющий импортировать мой файл как обычный модуль / пространство имен.