2013-03-07 12 views
5

下線これは、オンラインのAdaリファレンスマニュアルからである: http://www.adaic.org/resources/add_content/standards/05rm/RM.pdf(セクション2.3)エイダ数値リテラルと

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. 

私は

my_literal ::= 123_456; 

を行う場合は、アンダースコア(下線)は何を意味するのでしょうか? 意味には影響しませんと言います。それは何のためですか?私は単純な答えがあると確信していますが、読書と再reaidng通路は私を助けていない。

答えて

7

たとえば、コンマ()の通貨または[その他の]大きな数字のグループ化と同じ理由があります。したがって :

Million : Constant:= 1_000_000; 

また、あなたはベース設定マスキング用セットアップように関連してそれを使用することができる:

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# 
    ); 

そしておそらく、or一緒Mask_Mapのビットを使用します、and、およびxorがビット操作を行います。上記の方法は、多くの定数を単純に定義し、それらを直接操作するよりも少し面倒かもしれませんが、後で関数に変更してクライアントコードを変更する必要がないという点でより柔軟です。その関数の結果がパラメータ化された整数である場合にはさらに役立ちます。ここでは、ビットは定義1..PARAMETER'Sizeです。

+0

これはプログラマの読みやすさのためですか? –

+0

はい。 Adaは設計目標として維持可能性を持っていました。 – Shark8

+0

2つの連続する下線がエラーであることに注意してください。 [IIRC] – Shark8

関連する問題