Tôi đang cố gắng che giấu và có một chút rắc rối khi cố gắng xác định clojure (và/hoặc Lisp) tương đương với thành ngữ python phổ biến này.Tương đương clojure của thành ngữ Python "if __name__ == '__main__'" là gì?
Các thành ngữ là ở dưới cùng của một module python thường có một chút mã kiểm tra, và sau đó một tuyên bố mà chạy mã, ví dụ:
# 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()
này rất hữu ích cho đơn giản, quảng cáo -hoc thử nghiệm. Người ta thường sử dụng mô-đun này bằng cách viết from mymodule import MyClass
, trong trường hợp này _runTests()
không bao giờ được gọi, nhưng với đoạn mã ở cuối, người ta cũng có thể chạy nó bằng cách gõ python mymodule.py
trực tiếp từ dòng lệnh.
Có thành ngữ tương đương trong Clojure (và/hoặc lisp chung) không? Tôi không phải sau một thư viện kiểm tra đơn vị toàn diện (tốt, tôi, nhưng không phải trong câu hỏi này), tôi chỉ muốn bao gồm một số mã trong một mô-đun sẽ chỉ chạy trong một số trường hợp, vì vậy tôi có thể có một cách nhanh chóng để chạy mã tôi đã làm việc trên nhưng vẫn cho phép tệp của tôi được nhập như một mô-đun/không gian tên bình thường.
Tôi không nghĩ rằng * các tính năng * là tốt cho việc này. * Tính năng * hiển thị các tính năng có sẵn, không phải trạng thái môi trường hoặc yêu cầu chạy mã. –
tại sao không? * Các tính năng * được sử dụng cho tất cả các loại nội dung: để mô tả phần cứng đang chạy trên đó, một số lõi có sẵn, một số chế độ của phần mềm, phiên bản triển khai Lisp, phiên bản ngôn ngữ, cho dù đó là: chế độ hoặc: chế độ phát triển, v.v. –