arrays - 我如何在 Ada 中定义一个字符串数组?

标签 arrays string warnings ada

我想要的是在 Ada 中定义一个字符串数组。

我正在尝试执行这段代码:

type String is array (Positive range <>) of Character;
type lexicon is array(1..7) of String(1..20);
nomFumadors : lexicon := ("Macia","Xisco","Toni","Laura","Rocky","Paz");
nomNoFumadors : lexicon := ("Marina","Marta","Joan","Africa","America");

编译器说:

warning:wrong length for array of subtype of "String" defined at line 42

我的第 42 行是这样的:

type lexicon is array(1..7) of String(1..20);

但是 compailer 说警告在第 43 和 44 行:这些是什么:

nomFumadors : lexicon := ("Macia","Xisco","Toni","Laura","Rocky","Paz");
nomNoFumadors : lexicon := ("Marina","Marta","Joan","Africa","America");

有人可以帮我吗?

最佳答案

其他人提到了有界和无界字符串。您也可以使用 Indefinite_Vectors。您可以使用“&”运算符来初始化它们(与初始化列表相反,尽管下一个版本的 Ada 正在向容器添加初始化列表)。您可以通过传入索引来像使用数组一样使用向量,此外您还可以获得许多其他附加功能。

with Ada.Text_IO; use Ada.Text_IO;
with Ada.Containers.Indefinite_Vectors;

procedure Hello is

    package Vectors is new Ada.Containers.Indefinite_Vectors
        (Index_Type   => Positive,
         Element_Type => String);
         
    use type Vectors.Vector;
         
    nomFumadors   : Vectors.Vector 
        := Vectors.Empty_Vector 
            & "Macia" 
            & "Xisco" 
            & "Toni" 
            & "Laura" 
            & "Rocky" 
            & "Paz";
    nomNoFumadors : Vectors.Vector
        := Vectors.Empty_Vector 
            & "Marina" 
            & "Marta" 
            & "Joan" 
            & "Africa" 
            & "America";
begin
    Put_Line("Hello, world!");
    
    -- Loop through Elements
    for Name of nomFumadors loop
        Put_Line(Name);
    end loop;
    
    -- Loop by index
    for Index in nomNoFumadors.Iterate loop
        Put_Line(nomNoFumadors(Index));
    end loop;
    
end Hello;

关于arrays - 我如何在 Ada 中定义一个字符串数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70968102/

相关文章:

java - 类中的全局数组根据传递参数问题初始化大小

python - python根据什么参数区分格式化字符串和普通字符串?

java - Apache StringUtils Split 函数确实很疯狂

c# - 如何在不复制的情况下从 char 数组创建字符串?

jquery - 如何抑制无效电子邮件地址的 jQuery 警告?

c# - 代码契约问题

php - 如何让 mySQL 返回分组在多个 "tiers"中的数据

ruby - 为什么 array.index 比 array.include 快?

c++ - 为什么这段代码不起作用? (原型(prototype)中的 &array)

C:\Program Files(x86)\Windows Kits\8.1\Include\um\dbghelp.h(1545):错误C2220:警告被视为错误 - 未生成 'object'文件