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

如何在Ada中实现类似Java数组append的数组元素追加功能

Ada实现Integer数组追加元素的方案

Ada 标准的定长数组本身不支持动态追加元素,你可以通过以下两种方式实现需求,循环场景优先使用第一种方案:

方案1:使用标准库Vector容器(推荐)

Ada 官方提供了Ada.Containers.Vectors变长容器包,原生支持动态追加元素,也支持直接转为定长数组使用:

with Ada.Containers.Vectors;
with Ada.Text_IO; use Ada.Text_IO;

procedure Append_Demo is
    -- 实例化Integer类型对应的Vector包
    package Int_Vectors is new Ada.Containers.Vectors
      (Index_Type   => Natural,
       Element_Type => Integer);
    use Int_Vectors;

    -- 自定义Integer数组类型,按需定义即可
    type Int_Array is array (Positive range <>) of Integer;

    V : Vector := Empty_Vector;
    Final_Arr : access Int_Array;
begin
    -- 初始写入1、2
    Append(V, 1);
    Append(V, 2);

    -- 循环追加逻辑示例,你可以把Append放到你自己的循环体中
    Append(V, 3);

    -- 转为定长数组使用
    Final_Arr := new Int_Array'(To_Array(V));

    -- 验证输出:1 2 3
    for Num of Final_Arr.all loop
        Put(Num'Image & " ");
    end loop;
    New_Line;
end Append_Demo;

方案2:手动实现数组拼接(仅适合低频追加场景)

如果你不想引入容器,也可以手动封装数组追加函数,缺点是每次调用都会重新分配内存,循环次数多的话性能损耗较大:

-- 入参为原始数组和待追加元素,返回新的拼接后数组
function Append_Int(Original : Int_Array; New_Item : Integer) return Int_Array is
begin
    return Result : Int_Array(Original'First .. Original'Last + 1) do
        Result(Original'Range) := Original;
        Result(Result'Last) := New_Item;
    end return;
end Append_Int;

-- 调用示例
-- A : Int_Array := (1, 2);
-- B : Int_Array := Append_Int(A, 3); -- B的值为(1,2,3)

内容的提问来源于stack exchange,提问作者wang kom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:18:04