2013-03-07 20 views
5

Questo è dal manuale online di riferimento Ada: http://www.adaic.org/resources/add_content/standards/05rm/RM.pdf (sezione 2,3)Ada numerici letterali e Sottolineato

A decimal_literal is a numeric_literal in the conventional decimal notation (that is, the base is ten). 
Syntax 
decimal_literal ::= numeral [.numeral] [exponent] 
**numeral ::= digit {[underline] digit}** 
exponent ::= E [+] numeral | E – numeral 
digit ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 
An exponent for an integer literal shall not have a minus sign. 
Static Semantics 
**An underline character in a numeric_literal does not affect its meaning.** The letter E of an exponent can be 
written either in lower case or in upper case, with the same meaning. 

Se faccio

my_literal ::= 123_456; 

cosa fa la sottolineatura (sottolineato) significa? Dice che non influisce sul significato. Allora a cosa serve? Sono sicuro che c'è una risposta semplice, ma leggere e riesaminare il passaggio non mi ha aiutato.

risposta

7

È lo stesso motivo, ad esempio, di virgole (,) in valuta o [altri grandi] numeri: raggruppamento. Così:

Million : Constant:= 1_000_000; 

Inoltre, si potrebbe usare in combinazione con base-impostazione come un set-up per la mascheratura:

Type Bit is Range 1..8; 
SubType Byte is Interfaces.Unsigned_8; 
Type Masks is Array(Positive Range <>) of Byte; 

Mask_Map : Constant Masks(Bit):= 
    (
     2#0000_0001#, 
     2#0000_0010#, 
     2#0000_0100#, 
     2#0000_1000#, 
     2#0001_0000#, 
     2#0010_0000#, 
     2#0100_0000#, 
     2#1000_0000# 
    ); 

Allora forse userebbero Mask_Map e bit insieme con or , and e xor per eseguire la manipolazione dei bit. Il metodo di cui sopra può sembrare un po 'più di lavoro rispetto alla semplice definizione di molte costanti e manipolarle direttamente, ma è più flessibile in quanto è possibile modificarlo in seguito in una funzione e non dover modificare alcun codice client, che potrebbe inoltre, è utile se il risultato di tale funzione era un numero parametrizzato, in cui bit ha la definizione 1..PARAMETER'Size.

+0

Quindi è interamente per la leggibilità del programmatore? –

+0

Sì. Ada aveva la manutenibilità come obiettivo di progettazione. – Shark8

+0

È * necessario * essere consapevoli del fatto che due sottolineature consecutive sono un errore. [IIRC] – Shark8