generics - 如何使通用形式参数别名
问题描述
我正在尝试像这样声明一个形式参数:
generic
S : aliased String;
package My_Package is
Str : access constant String := S'Access;
end;
但是这段代码无法编译。为什么我不能让 S 别名?
解决方案
简单的答案是:因为 Ada 标准不允许这样做。至于为什么不允许,我不知道;我不知道有任何关于这个问题的讨论。
你为什么要这样做?
您的示例代码当然在其他方面也不正确:Str 的初始化应该提供一个访问值,而不是像 S 这样的字符串值。但是您不能使用 S'Access,因为 S 没有别名。
使用 GNAT,您可以使用 S'Unrestricted_Access,即使正式对象没有别名。如果你这样做,你应该对正式对象使用“in out”模式;这将使它像重命名一样,或多或少等同于传递引用。
推荐阅读
- javascript - 在功能组件中使用方法回调测试按钮
- reactjs - 使用 React 的 UseEffect 和事件监听器的区别?
- javascript - Phaser 3中的对撞机随机不起作用
- c++ - 如果它是 OpenCV 垫,我应该释放 std::map 值吗?
- ruby-on-rails - 用于为所有现有 ActiveStorage 变体创建数据库记录的 Rake 任务
- macos - Vim 彻底坏了,不能用
- c# - Microsoft Access 的 OleDbConnection.State 问题
- python - 如何检查是否在 tkinter python 中编辑了文本小部件?
- mysql - mysql上END附近的事件计划错误标记
- java - 在 onComplete 方法中实现接口的问题