繁体   English   中英

ballerina 中的命令行 arguments 解析类似于 python 中的 argparse

[英]Command line arguments parsing in ballerina similar to argparse in python

有什么方法可以解析 ballerina 中的命令行 arguments 吗? 据我所见,您只能使用位置 arguments。我想做的是这样的:

//main.bal
public function main(string? name, int? age) returns error? {
    if (name is string && age is int) {
        io:println("Hello " + name);
        io:println("Age " + age.toString());
    }
}

然后按如下方式运行程序:

bal run main.bal -- --name John --age=18

但这不起作用,因为它将“--name”作为第一个位置参数,“John”作为第二个位置参数。 所以它抛出一个错误:

error: invalid argument 'John' for parameter 'age', expected integer value

如果我按如下方式运行它,它就会运行:

bal run main.bal -- John 18

如果为选项指定了 arguments,则可以按名称传递。

如果 arguments 是记录的一部分,例如

public type Details record {|
    string name?;
    int age?;
|};

并且main的 function 有一个包含这种类型的记录参数来指定选项

public function main(*Details f) {
    string? name = f?.name;
    int? age = f?.age;

    if name is string && age is int {
        io:println("Hello ", name);
        io:println("Age ", age);
    }
}

它可以按如下方式运行

$ bal run main.bal -- --name=Jo --age=25

这是在 Swan Lake Alpha5 中引入的,发行说明提供了更多信息 - https://ballerina.io/downloads/swan-lake-release-notes/swan-lake-alpha5/#improved-command-line-argument-parsing

您可以为此使用configurable的支持。 检查这个例子:

import ballerina/io;

configurable string name = ?;
configurable int age = ?;

public function main() returns error? {
    io:println("Hello " + name);
    io:println("Age " + age.toString());
}

然后在运行时你可以提供如下值:

bal run main.bal -- -Cname="Ballerina" -Cage=5

结果是

Hello Ballerina
Age 5

查看本指南了解更多详情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM