Ada - Подтип марки требуется в этом контексте - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь создать простую программу зацикливания, но получаю ошибку в строке 18, в этом контексте требуется метка подтипа, но я не получаю эту ошибку при запуске других программ?

with Ada.Text_IO;
use Ada.Text_IO;

with Ada.Integer_Text_IO;
use Ada.Integer_Text_IO;

with Ada.Strings.Unbounded;
use Ada.Strings.Unbounded;

with Ada.Text_IO.Unbounded_IO;
use Ada.Text_IO.Unbounded_IO;

procedure main is
input   : Unbounded_String;

begin

    while input not in "!Close" loop --Line 18
    Get_Line(input);
end loop;

end main;

1 Ответ

0 голосов
/ 30 мая 2018

В тесте на членство оба значения должны быть одного типа.В вашем случае input - это Unbounded_String, а "!Close" - строковый литерал.Вы должны либо преобразовать один из них в другой, либо просто использовать оператор равенства, определенный в Ada.Strings.Unbounded (а так как вы уже сделали use Ada.Strings.Unbounded, у вас есть видимость всех альтернатив):

while input not in To_Unbounded_String("!Close") loop --Line 18

или

while To_String(input) not in "!Close" loop --Line 18

или

while input /= "!Close" loop --Line 18
...