文字列を取り込んで、文字ごとにリンクリストに割り当てようとしており、次のように宣言されています。
type lstring is private;
type lstring_node;
type lstring_access is access lstring_node;
type lstring_node is
record
Char : character;
Position : integer;
Next : lstring_access;
end record;
private
type lstring is
record
First : lstring_access := null;
end record;
それを割り当てる関数は次のようになります。
function toLstring (Input : string) return lstring is
LStr : lstring;
Current : lstring_access;
begin
-- Set the first item of LStr as Current.
-- LStr will from now on inherit the items of Current.
LStr.First := new lstring_node;
Current := LStr.First;
-- Iterate through the string and add it to the lstring.
for I in 1..Input'Length loop
if I /= 1 then
Current := new lstring_node;
end if;
Current.Char := Input(I);
Ada.Text_IO.Put(Current.Char);
Current.Position := I;
Current := Current.Next;
end loop;
-- Return the new lstring.
return LStr;
end toLstring;
デバッグを通じて、for ループが問題なく機能していること、および要素が Current に問題なく割り当てられていることがわかりました。しかし、何らかの理由で項目が LStr に追加されていません。for ループを終了するには、for ループの後に何かを宣言する必要がありますか? Current が LStr.First に割り当てられているため、LStr は追加されたリストの残りを継承するという印象を受けています。私は間違っていますか?
ありがとう