【问题标题】:Named argument for fish function with argparse带有 argparse 的 fish 函数的命名参数
【发布时间】:2019-06-18 21:02:03
【问题描述】:

fish function 内置选项-a/--argument-names 允许将参数绑定到名称。

在使用 argparse 内置函数的同时仍然可以这样做吗?如果有,怎么做?

【问题讨论】:

    标签: shell parsing arguments fish


    【解决方案1】:

    我设计并实现了argparse。是的,从技术上讲,您可以在同一个函数中使用--argument 标志和argparse,但这样做没有任何意义。 --argument 选项完全独立于argparse 运行,并且不知道标志。创建以下函数:

    function x -a arg1 -a arg2
        set --show arg1 arg2 argv
    end
    

    现在调用它:x --flag val arg。请注意,--flag 绑定到 arg1val 绑定到 arg2argv 仍然包含传递给函数的所有参数。如果你的函数有标志,你不应该使用--argument。如果不是,那么使用argparse 就没有任何意义。

    【讨论】:

    • 嗯嗯。功能请求时间。
    • @0az 您希望两者如何互动?正如我已经说过的,如果您的函数识别短标志或长标志,您应该使用argparse 而不是--argument。而--argument 本身在任何情况下都不是真正需要的。它只是在函数内部执行set -l arg1 $argv[1]set -l arg2 $argv[2] 等的语法糖。看看一些使用argparse 的标准自动加载函数;例如,alias.fish.
    • 具体来说,是向 argparse 添加位置参数的功能请求。这只是糖,但它鼓励使用更具可读性的名称。
    • @0az argparse 完成后 $argv 删除了所有非位置参数;即,它将仅包含位置参数。因此,如果给它们提供有意义的名称可以提高函数的清晰度,只需在 argparse 调用之后执行 set -l var_name1 $argv[1] 等。我怀疑以这种方式使argparse 复杂化是否合理。特别是因为您必须为位置参数的数量与 var 名称的数量不匹配时发生的情况定义规则。
    猜你喜欢
    • 2018-08-11
    • 2016-02-16
    • 2019-09-16
    • 2021-06-28
    • 2020-05-04
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多