0

根据官方文档,我应该可以使用

def main [ &rest _ ]

我在 let 块中尝试了这个例子:

(import argparse) 
(require [hy.contrib.walk [let]]) 
(def main [&rest _]
   (let [parser (argparse.ArgumentParser)]
     (.add-argument parser "STRING"
       :help "string to replicate")
     (.add-argument parser "-n" :type int :default 3
       :help "number of copies")
     (setv args (parser.parse_args))
     (print (* args.STRING args.n))
     ))

但我看到以下错误:

... trace
NameError: name 'hyx_def' is not defined

奇怪的是,打印字符串“n”次的代码块工作正常。然而,错误出现在最后。

根据此链接:https ://github.com/hylang/hy/pull/1483,def已被完全删除。

那么我应该用什么来声明一个主函数呢?

4

1 回答 1

0
defmain

是正确的形式。以下作品:

(import argparse) 
(require [hy.contrib.walk [let]]) 
(defmain [&rest _]
   (let [parser (argparse.ArgumentParser)]
     (.add-argument parser "STRING"
       :help "string to replicate")
     (.add-argument parser "-n" :type int :default 3
       :help "number of copies")
     (setv args (parser.parse_args))
     (print (* args.STRING args.n))
     ))
于 2020-11-17T03:44:00.503 回答