gpt4 book ai didi

"S"的 Ada 实际值必须是一个变量

转载 作者:行者123 更新时间:2023-12-05 01:08:50 24 4
gpt4 key购买 nike

所以这是我的 body 文件的一部分。我收到错误“words.adb:75:42:“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 out Ustring 而函数 Is_Subset 使用 S : in Ustring。
我的问题是如何将变量从 Remove_Character 更改为仅在 Ustring 中的变量?
对不起,如果这有点困惑,我对编程和网站都很陌生。

最佳答案

你不能,至少不能直接。

我不知道是什么 UString是,但我认为 Delete程序修改它。如果您更改了 S 的声明在 Remove_CharacterS: in Ustring ,您可能会在调用 Delete 时遇到错误.

我能想到的最简单的方法是复制 SIs_Subset :

Copy_Of_S: UString := S;

然后将(可修改的)副本传递给 Remove_Character .

“最简单”是指对现有代码进行最小的更改。但是您可能应该考虑重新组织它。通过修改一个字符串来确定一个 UString 是否是另一个的子集似乎不是最好的方法;我相信有更有效的方法来做到这一点。

一个次要且不相关的点:这个:
if Could_Remove = false then

最好写成:
if not Could_Remove then

关于 "S"的 Ada 实际值必须是一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16621176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com