簡體   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