Variabili a livello di pacchetto.
Si noti che i pacchetti non sono necessariamente a livello di file; puoi anche creare e utilizzare un pacchetto locale per un sottoprogramma, se lo desideri. Un uso di un pacchetto è creare un oggetto e tutti i metodi che agiscono su di esso (modello singleton); mantenendo tutti i dettagli dell'oggetto privato.
Se la mia comprensione del C++ non è troppo arrugginito, una stretta equivalente sarebbe:
package HW_Counter is
function Get_Next;
private
count : natural := 0; -- one way of initialising
-- or integer, allowing -ve counts for compatibility with C++
end HW_Counter;
e questo è tutto del cliente del pacchetto ha bisogno di vedere.
package body HW_Counter is
function Get_Next return natural is
begin
count := count + 1;
return count;
end Get_Next;
begin -- alternative package initialisation part
count := 0;
end HW_Counter;
e l'uso sarebbe tipicamente
C := HW_Counter.get_next;
fonte
2013-05-05 12:08:39
È possibile creare un pacchetto locale a un sottoprogramma, ma otterrà elaborato su ogni voce (in modo che qualsiasi variabili verranno reinizializzati). –
In realtà, rileggendo la domanda, penso che siano esattamente l'equivalente delle variabili statiche a livello di file. Quindi no, non credo che ci sia un equivalente Ada della C. Ma non è difficile ottenere lo stesso effetto, se un po 'più faticoso. –
In Ada 2012 non è nemmeno necessario un corpo del pacchetto, è possibile utilizzare una funzione di espressione nella sezione privata per implementare l'accessor. – Shark8