ballerina 中的命令行参数解析类似于 python 中的 argparse
Command line arguments parsing in ballerina similar to argparse in python
有什么方法可以解析 ballerina 中的命令行参数吗?据我所见,您只能使用位置参数。我想做的是这样的:
//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
如果我 运行 如下所示,那么它 运行s:
bal run main.bal -- John 18
您可以使用 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
Check this guide了解更多详情。
如果为选项指定参数,则可以按名称传递参数。
如果参数是记录的一部分,例如
public type Details record {|
string name?;
int age?;
|};
并且 main
函数有一个包含此类型的记录参数来指定选项
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。
有什么方法可以解析 ballerina 中的命令行参数吗?据我所见,您只能使用位置参数。我想做的是这样的:
//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
如果我 运行 如下所示,那么它 运行s:
bal run main.bal -- John 18
您可以使用 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
Check this guide了解更多详情。
如果为选项指定参数,则可以按名称传递参数。
如果参数是记录的一部分,例如
public type Details record {|
string name?;
int age?;
|};
并且 main
函数有一个包含此类型的记录参数来指定选项
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。