代码之家  ›  专栏  ›  技术社区  ›  onaclov2000

限制Ada中特定其他函数调用的函数

  •  1
  • onaclov2000  · 技术社区  · 14 年前

    假设我有一个只想由另一个特定过程调用的过程。是否可以强制对该过程进行限制,以便它只能由指定的调用过程引用?我真正想知道的是,是否有另一种方法来编写代码,这样您就不必在过程中嵌套/嵌入过程,以强制限制范围。

    procedure one
       procedure two
       begin
          blah
       end two;
    begin
    end one;
    

    3 回复  |  直到 14 年前
        1
  •  4
  •   trashgod    14 年前

    一个公共过程是一个公共过程,所以它可以被任何“with's”它(如果它是一个独立的过程)或声明它的包调用。

    如果其中任何一种方法可能适合您的实现方法,那么有几种方法可以限制其可见性:

    • 在包的私有部分或包体中声明过程。只有包中的子程序才能访问它。
    • 将提供的包或子程序声明为 private ,则“with”它的那些包只能引用其私有部分或包体中提供单元的内容(包括调用其子程序)。
    • “Private with”提供包,因此它只能在其私有部分/包体中引用包。

    但就像T.E.D.说的,工作 语言并利用其功能,而不是试图重新创建其他语言的结构。

        2
  •  3
  •   T.E.D.    14 年前

    好吧,如果你 procedure one 一包一包 procedure two private

    您还可以使用特定于 程序一 在里面,把 以该类型的对象作为参数。其他人可能会打电话 程序二 ,但不能与 程序一 的对象。

        3
  •  1
  •   Josh    14 年前

    我有两个可能的建议。第一个有点奇怪,有点离题,但我想提出来,以防你不知道,因为大多数答案都与隐藏代码可见性或更改关系有关