LibreOffice Basic中是否有Bash的$@等价语法传递函数所有参数?
在LibreOffice Basic中模拟Bash的
$@功能(不修改函数声明) LibreOffice Basic没有直接对应Bash $@的语法,但可以通过内置的Args()数组结合函数已声明的参数,实现获取所有传递参数的需求,且无需修改Function prova(a, b, c)这一行。
核心原理
LibreOffice Basic的Args()是一个内置变体数组,存储了当前函数/过程接收到的所有参数,下标从1开始:
- 已声明的参数
a对应Args(1),b对应Args(2),c对应Args(3) - 如果调用函数时传递了超过3个参数,额外参数会依次存入
Args(4)、Args(5)等位置
实现代码
Function prova(a, b, c) ' 初始化数组存储所有参数,先包含已声明的a、b、c Dim allArgs() As Variant ReDim allArgs(0 To 2) allArgs(0) = a allArgs(1) = b allArgs(2) = c ' 检查是否存在额外传递的参数 Dim totalArgs As Integer totalArgs = UBound(Args()) If totalArgs > 3 Then ' 扩展数组容量,容纳额外参数 ReDim Preserve allArgs(0 To totalArgs - 1) Dim i As Integer For i = 4 To totalArgs allArgs(i - 1) = Args(i) Next i End If ' 示例:将所有参数用逗号拼接后返回,可根据需求修改逻辑 prova = Join(allArgs, ", ") End Function
使用说明
- 当调用
prova(1, 2, 3)时,返回1, 2, 3 - 当调用
prova("x", "y", "z", 4, 5)时,返回x, y, z, 4, 5 - 你可以直接使用
allArgs数组来遍历、处理所有参数,和Bash中$@的用法逻辑一致
内容的提问来源于stack exchange,提问作者Mario Palumbo
相关产品推荐
相关产品推荐

