2016-03-19 1 views

ответ

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 предназначены для ключевого слова. Основные ошибки в вашем фрагменте кода заключаются в следующем: (а) вам нужно использовать =>, а не :=, и (б) даже с этим изменением фрагмент недействителен сам по себе; он нуждается в контексте.

1

Прежде всего, others является зарезервированным ключевым словом Ada, поэтому вы не можете использовать его как имя переменной. Ключевое слово «другие» определяет остальные параметры в списке параметров.

Предположим, что это непреднамеренное ошибка, и то, что вы имели в виду сделать что-то вроде:

other := (other := -1) 

Это не будет работать, оператор присваивания не возвращает значение, так other := -1 не является ценностью, таким образом, не может быть назначенным.

С другой стороны, хотя, что-то вроде следующего является действительным, учитывая тип другой булевы:

other := (other = false); 

В этом случае оператор сравнения = возвращает логическое значение, которое затем присваивается переменной Другие.