У меня есть сомнения в использовании ADA.Назначение значений ключевому слову Others в Ada
others := (others := -1)
Является ли это заявление действительным. Если это неверно, почему оно недействительно?
У меня есть сомнения в использовании ADA.Назначение значений ключевому слову Others в Ada
others := (others := -1)
Является ли это заявление действительным. Если это неверно, почему оно недействительно?
others := (others := -1)
Нет, это недействительно. Это синтаксическая ошибка (которую вы могли бы обнаружить путем ее компиляции).
Это трудно сказать, что это должно быть, но это справедливо:
procedure Foo is
A: array(1 .. 10) of Integer;
begin
A := (others => 42);
end Foo;
И вот это:
procedure Foo is
A2: array(1 .. 10, 1 .. 10) of Integer;
begin
A2 := (others => (others => 42));
end Foo;
Второй кажется ближе всего к тому, что вы написали, предполагая, что оба вхождения из others
предназначены для ключевого слова. Основные ошибки в вашем фрагменте кода заключаются в следующем: (а) вам нужно использовать =>
, а не :=
, и (б) даже с этим изменением фрагмент недействителен сам по себе; он нуждается в контексте.
Прежде всего, others
является зарезервированным ключевым словом Ada, поэтому вы не можете использовать его как имя переменной. Ключевое слово «другие» определяет остальные параметры в списке параметров.
Предположим, что это непреднамеренное ошибка, и то, что вы имели в виду сделать что-то вроде:
other := (other := -1)
Это не будет работать, оператор присваивания не возвращает значение, так other := -1
не является ценностью, таким образом, не может быть назначенным.
С другой стороны, хотя, что-то вроде следующего является действительным, учитывая тип другой булевы:
other := (other = false);
В этом случае оператор сравнения =
возвращает логическое значение, которое затем присваивается переменной Другие.
Как вы думаете, это может означать? Что ты пытаешься сделать? –