You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ballerina中实现类似Python argparse的命令行参数解析?

Ballerina 命令行命名参数解析实现方案

Ballerina 默认的主函数参数仅支持位置参数映射,要实现--name、--age这类命名参数的解析,需要使用官方标准库的 ballerina/cli 模块,具体实现方法如下:


完整实现代码

修改main.bal文件内容如下:

import ballerina/cli;
import ballerina/io;

// 标注当前主函数为CLI命令,开启命名参数解析能力
@cli:Command
public function main(
    // 配置name参数对应长命名标志--name
    @cli:Option(long = "name") string? name, 
    // 配置age参数对应长命名标志--age
    @cli:Option(long = "age") int? age
) returns error? {
    if name is string && age is int {
        io:println("Hello " + name);
        io:println("Age " + age.toString());
    }
    return;
}

运行验证

你期望的执行命令可以直接正常运行:

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

运行后输出预期结果:

Hello John
Age 18

原报错原因说明

之前运行报错是因为默认主函数不会识别--开头的命名参数标志,会将--name直接当作第一个位置参数(匹配string类型的name字段),第二个参数John被匹配到int类型的age参数,类型不匹配就抛出了错误。


扩展能力说明

  • 如需支持短参数,可在@cli:Option中添加short配置,比如@cli:Option(long = "name", short = "n"),就可以通过-n John传递参数
  • 可以给参数设置默认值,比如@cli:Option(long = "age") int age = 18,不传age参数时会默认使用18
  • 可通过description配置给参数添加说明,执行bal run main.bal -- --help时会自动打印帮助文档

内容的提问来源于stack exchange,提问作者Festim Deari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 23:42:03