如何在Ada中生成唯一的ID?

我正在处理一个Ada项目,我正在尝试生成一个唯一的ID,该ID将用作一个人的唯一标识符。 我想知道是否可以在Ada中生成唯一ID?

erma001 回答:如何在Ada中生成唯一的ID?

您实际上并没有指定很多要求,因此,如果您只需要快速简便的操作,则可以使用私有包变量,并使用生成器函数返回当前值,然后将其更新为新值。 / p>

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

如果您需要任务安全,则将“当前”变量包装在受保护的对象中。它最多只会生成2 ** 64个唯一ID,但是如果您的编译器支持更大的数据类型,则可以更改它。

,

Package PragmARC.Job_Pools会执行此操作,因此您可能需要查看一下。

PragmARC.Job_Pools

本文链接:https://www.f2er.com/3053944.html

大家都在问