2014-04-11 68 views
0

Ada 2012爲類型提供了Default_Value方面。有什麼辦法來限制通用類型參數,要求他們有一個默認值(或者有甚至一般方法來檢查任何方面?)我可以限制泛型類型參數以要求Default_Value方面嗎?

基本上我的問題是,如果下面的例子可以變得安全。目前蚊蚋拋出一個警告

main.adb:6:03:警告:變量 「VAR」 被讀取,但從來沒有分配[-gnatwv

當我不with Default_Value => 10.0定義MyFloat。

-- main.adb 
with MyProc; 

procedure test is 
    type MyFloat is new Float with Default_Value => 10.0; 
    package P is new MyProc (MyFloat); 
    Var : P.Bla; 
    Var2 : MyFloat := P.Stuff (Var); 
begin 
    null; 
end test; 

-- MyProc.ads 
generic 
    type MyTypeWithDefault is private; 
package MyProc is 
    type Bla is tagged private; 
    function Stuff (Self : Bla) return MyTypeWithDefault; 
private 
    type Bla is tagged record 
    Data : MyTypeWithDefault; 
    end record; 
end MyProc; 

-- MyProc.adb 
package body MyProc is 
    function Stuff (Self : Bla) return MyTypeWithDefault is 
    begin 
    return Self.Data; 
    end Stuff; 
end MyProc; 

回答

0

你可以在預阿達2012風格做到這一點:

generic 
    type MyTypeWithDefault is private; 
    Default_Value : in MyTypeWithDefault; 
package MyProc is 
    type Bla is tagged private; 
    function Stuff (Self : Bla) return MyTypeWithDefault; 
private 
    type Bla is tagged record 
    Data : MyTypeWithDefault:= Default_Value; 
    end record; 
end MyProc; 

但是你養好點;應該有一些方法來指定泛型的形式參數中的新方面。

相關問題