2016-03-19 29 views
-1

ADA'yı kullanırken şüphem var.Adadaki diğerlerine anahtar kelime atama

others := (others := -1) 

Bu ifade geçerli bir tanedir. Geçersiz ise neden geçersiz?

+0

Bunun ne anlama geldiğini düşünüyorsunuz? Ne yapmaya çalışıyorsun? –

cevap

1
others := (others := -1) 

Hayır, geçerli değil. Bu bir sözdizimi hatasıdır (bunu derleyerek öğrenmiş olabilirsiniz).

olması gerekenin söylemek zor, ama bu geçerlidir:

procedure Foo is 
    A: array(1 .. 10) of Integer; 
begin 
    A := (others => 42);  
end Foo; 

Ve böylece şudur:

procedure Foo is 
    A2: array(1 .. 10, 1 .. 10) of Integer; 
begin 
    A2 := (others => (others => 42)); 
end Foo; 

ikinci hem olayları varsayarak, Yazdığınız en yakın görünüyor others'un anahtar kelimesi olması amaçlanmıştır. Kod snippet'inizdeki ana hatalar şunlardır: (a) 'u := yerine kullanmanız gerekir, ve (b) bu ​​değişiklikle bile, snippet kendi başına geçerli değildir; bağlam gerektiriyor.

1

Her şeyden önce, others ayrılmış Ada anahtar kelimesidir, bu nedenle değişken adı olarak kullanamazsınız. Diğerlerinin anahtar sözcüğü, seçenekler listesinde kalan seçenekleri tanımlar.

bu istenmeyen bir hata varsayalım ve ne yapmak gerekiyordu şey gibidir:

other := (other := -1) 

Bu işe yaramaz, atama operatörü böylece other := -1 bir değer dolayısıyla değil, bir değer olamaz dönmez atanacak. Öte yandan

olsa diğer türüne verilen geçerli olan aşağıdaki boole gibi bir şey: Bu durumda

other := (other = false); 

ardından değişkene atanan bir boolean değer döndürür = karşılaştırma operatörü, diğer.