如何在 hy 程序中声明 'main'
How to declare 'main' in a hy program
根据官方文档,我应该可以使用
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' 次的代码块工作正常。但是错误出现在最后。
根据这个 link : https://github.com/hylang/hy/pull/1483 ,def 已被完全删除。
那么我应该用什么来声明一个主函数?
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))
))
根据官方文档,我应该可以使用
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' 次的代码块工作正常。但是错误出现在最后。
根据这个 link : https://github.com/hylang/hy/pull/1483 ,def 已被完全删除。
那么我应该用什么来声明一个主函数?
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))
))