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

如何在Ballerina中创建空表并逐步添加记录及相关函数查询

在Ballerina中创建空表并添加记录及表函数说明

一、创建空表并添加记录

你的Employee记录里,name是只读字段,刚好适合作为表的主键(Ballerina的表必须指定主键来唯一标识每条记录)。下面是具体实现步骤:

1. 定义空表

type Employee record {|
    readonly string name;
    string department;
|};

// 创建以`name`为主键的空Employee表
table<Employee> key(name) employees = table [];

2. 逐步添加记录

有两种常用方式可以向表中添加记录:

方式一:使用add()函数(带错误处理)

add()函数会返回error?类型,当主键重复时会抛出错误,适合需要处理冲突的场景:

// 添加第一条员工记录
check employees.add({name: "Alice", department: "Engineering"});

// 添加第二条员工记录
check employees.add({name: "Bob", department: "Marketing"});

注:如果不需要显式处理错误,也可以用ignore替代check,忽略主键冲突的错误。

方式二:使用push语法(简化写法)

Ballerina 2201.4.0及以上版本支持push语法,写法更简洁,但主键重复时会直接panic,适合确定不会有重复主键的场景:

employees.push({name: "Charlie", department: "HR"});

二、Ballerina表常用内置函数

Ballerina的table类型提供了一系列实用的内置函数,以下是常用的几类:

数据操作类

  • add():添加单条记录,返回error?,主键重复时返回错误。

    error? addResult = employees.add({name: "Dave", department: "Finance"});
    
  • addAll():批量添加多条记录,接收可迭代的记录集合,同样处理主键冲突。

    Employee[] newEmployees = [{name: "Eve", department: "Engineering"}, {name: "Frank", department: "Marketing"}];
    error? addAllResult = employees.addAll(newEmployees);
    
  • delete():根据主键删除记录,返回被删除的记录或()(无对应记录时)。

    Employee? deletedEmp = employees.delete("Bob");
    
  • update():根据主键更新记录的非只读字段,返回更新后的记录或()(无对应记录时)。

    Employee? updatedEmp = employees.update("Alice", {department: "Product"});
    

查询与遍历类

  • get():根据主键获取记录,返回对应记录或()(无对应记录时)。

    Employee? emp = employees.get("Alice");
    
  • keys():返回所有主键的迭代器,可用于遍历所有主键。

    iterator<string> empNames = employees.keys();
    for string name in empNames {
        io:println(name);
    }
    
  • values():返回所有记录的迭代器,可用于遍历所有记录。

    iterator<Employee> emps = employees.values();
    for Employee emp in emps {
        io:println(emp.name, " - ", emp.department);
    }
    

统计与判断类

  • size():返回表中记录的总数。

    int empCount = employees.size();
    io:println("Total employees: ", empCount);
    
  • hasKey():判断表中是否存在指定主键的记录,返回布尔值。

    boolean hasCharlie = employees.hasKey("Charlie");
    

内容的提问来源于stack exchange,提问作者LUHEERATHAN THEVAKUMAR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 01:31:19