Я работаю в 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 (и/или общая Lisp)? Я не после полномасштабной библиотеки тестирования модулей (ну, я, но не в этом вопросе), я просто хотел бы включить некоторый код в модуль, который будет запускаться только при некоторых обстоятельствах, поэтому я могу быстрый способ запустить код, над которым я работал, но все же разрешить импортировать мой файл, как обычный модуль/пространство имен.