我正在进行一个Ada项目,尝试生成一个唯一的ID作为人的标识符。请问是否有在Ada中生成唯一ID的方法?
我正在进行一个Ada项目,尝试生成一个唯一的ID作为人的标识符。请问是否有在Ada中生成唯一ID的方法?
您并没有详细说明很多要求,因此如果您只需要快速而简单的解决方案,可以使用私有包变量,并让生成器函数返回当前值并将其更新为新值。
with Ada.Text_IO; use Ada.Text_IO;
procedure Hello is
package IDs is
type ID is mod 2**64;
function New_ID return ID;
end IDs;
package body IDs is
Current : ID := 0;
function New_ID return ID is
begin
return Result : ID := Current do
Current := Current + 1;
end return;
end New_ID;
end IDs;
begin
Put_Line("Hello, world!");
Put_Line("New ID =>" & IDs.ID'Image(IDs.New_ID));
Put_Line("New ID =>" & IDs.ID'Image(IDs.New_ID));
end Hello;
输出:
$gnatmake -o hello *.adb
gcc -c hello.adb
gnatbind -x hello.ali
gnatlink hello.ali -o hello
$hello
Hello, world!
New ID => 0
New ID => 1