【发布时间】:2015-04-19 22:10:45
【问题描述】:
我是 Racket 的新手(一般来说也是 Lisp 的新手),我想知道是否有一种规范的方法可以检测脚本是否从命令行运行?
例如,在 Python 中,执行此操作的标准方法是使用 if __name__ == __main__:,如下所示:
def foo():
"foo!"
if __name__ == "__main__":
foo()
现在,假设我有以下 Racket 代码,并且我希望仅在作为脚本运行时调用 respond。
#lang racket
(require racket/cmdline)
(define hello? (make-parameter #f))
(define goodbye? (make-parameter #f))
(command-line #:program "cmdtest"
#:once-each
[("-H" "--hello") "Add Hello Message" (hello? #t)]
[("-G" "--goodbye") "Add goodbye Message" (goodbye? #t)])
(define (respond)
(printf "~a\n"
(apply string-append
(cond
[(and (hello?) (goodbye?)) '("Hello" " and goodbye.")]
[(and (hello?) (not (goodbye?))) '("Hello." "")]
[(and (not (hello?)) (goodbye?)) '("" "Goodbye.")]
[else '("" "")]))))
有没有一种简单/标准的方法来实现我想要的?
【问题讨论】:
标签: scheme command-line-interface racket