![](/img/trans.png)
[英]Submit command line arguments to a pyspark job on airflow
[英]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.