我想要的是在 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/