4
因此,这是我的身体文件的一部分。我得到错误“words.adb:75:42:”S“的实际值必须是一个变量”。Ada实际为“S”必须是一个变量
procedure Remove_Character(S : in out Ustring; C : in Character; Successful : out Boolean) is
begin
for I in 1..length(S) loop
if Element(S, I) = C then
Delete(S, I, I);
Successful := true;
return;
end if;
end loop;
Successful := false;
end Remove_Character;
function Is_Subset(Subset : Ustring; S : Ustring) return Boolean is
Could_Remove : Boolean;
begin
for I in 1..length(Subset) loop
Remove_Character(S , Element(Subset, I), Could_Remove);
if Could_Remove = false then
return false;
end if;
end loop;
return True;
end Is_Subset;
我明白我的错误来自哪里。 Remove_Character使用S:in Ustring,而函数Is_Subset使用S:在Ustring中。 我的问题是如何将变量从Remove_Character更改为仅在Ustring中? 对不起,如果这是一个混乱,我相当新的编程和网站。
基思是正确有关如何解决您的编辑问题。但是,你应该仔细考虑你的循环; '1..length(subset)'在循环开始时计算一次,但在循环过程中更改'length(Subset)'。您可以使用[循环退出语句](http://www.ada-auth.org/standards/12rm/html/RM-5-5.html#p15)。 –