Ada T'Class 的基础知识

2024-03-15

虽然有点不好意思问这个问题,但我知道这是最好的。我已经使用 Ada 编程很多年了,并且几乎可以流利地理解该语言的每个部分。然而,我似乎始终无法完全理解 T'Class。借用别人的话,有人可以“像我五岁一样解释一下吗?”。

编辑:我买它只是为了拥有,但其中包含对 T'Class 的详细描述和示例使用;我参考了 Michael B. Feldman 的“Software Construction and Data Structures with Ada 95”。


如果你开始于

package P1 is
   type T is tagged private;
   procedure Method (Self : T);
end P1;
package P2 is
   procedure Proc (Self : T);  -- not a primitive
   procedure Proc2 (Self : T'Class);
end P2;

在 Proc 的情况下,您告诉编译器该参数应始终被精确地视为 T 类型(请记住,标记类型始终通过引用传递,因此实际类型可以从 T 派生,当然,您不会丢失额外数据)。特别是,这意味着在 Proc 主体内,对 Method 的所有调用都将完全是对 P1.Method 的调用,而不是对重写 Method 的调用。

对于 Proc2,您告诉编译器您不知道静态的确切类型,因此需要插入额外的代码来在运行时解决问题。在 Proc2 主体内对 Method 的调用可以是对 P1.Method 或另一个重写 Method 的调用。

基本上:对于“类”,事情在运行时解决。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ada T'Class 的基础知识 的相关文章

  • 有谁知道协议缓冲区的 Ada 插件吗?

    我正在寻找用于协议缓冲区的 Ada 插件 看起来除了 Ada 之外 几乎所有语言插件都可用或正在开发中 嗯 我唯一发现的是这篇论文 不幸的是 我没有找到任何翻译工具的源代码 即你所说的plugin 我唯一能告诉的是该工具是用 C 开发的 U
  • 从 Ada 调用 scanf

    如何从 Ada 调用 scanf 也就是说 大概有一个适当的 pragma import 声明 但是声明会是什么样子呢 我感兴趣的是如何从 Ada 调用更难以驾驭的 C 函数 而不是如何解析字符串本身 所以我不是在寻找纯粹的 Ada 解决方
  • Ada:在块语句中写入文件

    我正在处理一个数组 其长度在程序执行期间确定 所以我正在利用block我可以在其中设置数组限制的语句 我在将数组的元素写入文件时遇到问题因为我在写入过程中使用了存根 我删除了存根 使所有内容都在同一代码中 虽然现在我的代码编译并运行 它没有
  • Ada:包装概念[关闭]

    Closed 这个问题是基于意见的 目前不接受答案 这是我之前的帖子的后续内容 Ada 了解私有类型并了解包装 一个实现Rectangular类型是使用一种实现来制作的 即Rectangular Method 1此实现需要一个规范文件和一个
  • Ada 中有“this”关键字吗?

    具体来说 任务有没有办法获得对其自身的引用 例如 task type someTask type someTaskAccessor is access someTask task body someTask is pointerToTask
  • Ada 与 Netbeans

    我下载了 Netbeans 插件 用于使用 Ada 进行编程 但是 我不知道如何将Eclipse链接到Ada平台库 什么应该链接到 IDE lib 等 bin 我不知道该怎么办 安装后Ada 插件模块 http wiki netbeans
  • 为什么字符串需要用初始值初始化?

    我有一根绳子lx String我想稍后在代码中设置该值 但出现错误unconstrained subtype not allowed need initialization provide initial value or explicit
  • 如何阻止控制台窗口立即关闭 | GNAT-GPS

    我有 Ada 程序 可以使用 GNAT GPS 完美运行和编译 当我运行其 exe 文件并提供用户输入时 该 exe 会立即关闭 而不是说 按任意键继续 我在网上搜索了很多 但我只找到了与使用 system pause 的 c c visu
  • 标准 ada 包含路径是什么

    我在使用 apt get 安装的 Ubuntu 上使用 gnat 4 6 我需要知道在哪里安装下载的库 例如APQ http sourceforge net projects apq 我应该设置什么ADA INCLUDE PATH and
  • ADA 文件名与包名称

    我继承了一个 ADA 程序 其中源文件名和包文件名不遵循默认命名约定 ADA 对我来说是新的 所以我可能会错过一些简单的东西 但我在 GNAT Pro 用户指南中看不到它 这个类似的问题 https stackoverflow com qu
  • 从 Ada 程序启动可执行文件并读取结果

    I found this https stackoverflow com questions 32663224 why isnt my gnats standout file descriptor working问题和第一个答案包含一些示例
  • 将分隔的字段合并为一个

    我在 Ada 工作 我有一个非常丑陋的类型 我无法修改 我想做一些易于使用的事情 类型是这样的 for T Ugly Type Alignment use 4 for T Ugly Type Size use 48 for T Ugly T
  • Ada:操作员不直接可见

    我正在使用 GNAT GPS studio IDE 来对 Ada 进行一些训练 我遇到了包可见性问题 首先 我在名为 DScale ads 的文件中指定一个包 其中包含以下类型 package DScale is type DMajor i
  • 如何在 Mac OS X 上获取内存泄漏的行编号堆栈跟踪?

    我已经成功获得了 Xcodeleaks报告我的命令行 GCC Ada 程序中的泄漏的工具 通过添加delay 11 0 最后让leaks进行检查 然后 export MallocStackLogging 1 foobar leaks foo
  • 浮点到字符串:字符串长度问题

    我想将浮点值转换为字符串并创建以下简短示例 with Ada Text IO procedure Example is A constant Float 1 234 B constant Float 123 456 789 C consta
  • 单元测试期间 Ada 中的异常处理

    我正在尝试为我最近编写的一些 Ada 代码编写一些单元测试 我有一个特殊的情况 我希望得到一个异常 如果代码工作正常 我不会 但在这种情况下我所做的只是测试 而不是编写代码 如果我在测试例程中处理异常 那么我不知道如何继续在该过程中进行测试
  • 创建不兼容的数字子类型

    在 Ada 中 可以创建不兼容的等效数字类型 type Integer 1 is range 1 10 type Integer 2 is range 1 10 A Integer 1 8 B Integer 2 A illegal 这可以
  • 让 Ada(用 GNAT 编译)从当前目录外部导入文件?

    我正在大学学习编程入门课程 选择的语言是 Ada 我正在 Kate 中编码并使用 GNAT 4 6 3 进行编译 我们必须为我们的程序使用教师提供的库 如下所示 with foo use foo 当然 然后文件foo adb必须包含在与我的
  • Mac OS 上的 Ada 编译器 GNAT

    我正在尝试使用 mac 上的终端编译 ada 但总是收到此错误 错误 x ada 中的 ada 值无效 有人知道如何解决这个问题吗 你可能没有安装Ada编译器 OSX自带的gcc不支持Ada 目前 有两种适用于 OSX 且支持 Ada 的免
  • ‘access’参数模式有什么用处?

    Ada 中有三种传递参数的 正常 模式 in out and in out 但还有第四种模式 access 有什么需要它们的吗 即 否则不可能实现的事情 现在 我确实知道 GNAT JVM Ada 编译器在导入的 库 规范中大量使用了它们

随机推荐

  • USB 调试 - 安装 Epson Moverio 驱动程序时出现问题

    Android 开发新手 我使用以下命令制作了一个小应用程序Eclipse http en wikipedia org wiki Eclipse 28software 29在虚拟 Android 设备上完美运行 现在 我想在真实的设备上运行
  • 如何使用 jQuery 或其他 js 框架将字符串作为文件上传

    使用javascript 我有一个字符串文件 通过ajax请求获得 如何通过另一个ajax请求将其作为文件上传到服务器 以下是无需手动构建多部分请求正文的方法 var s some string data var filename foob
  • 将 dd/mm/yyyy 转换为 SQL Server 中的日期

    我正在疯狂地尝试将字符串类型列转换为日期 列名称是StartDate 其中包含字符串日期格式dd mm yyyy 字段类型是varchar 3000 我尝试了以下方法 CONVERT datetime StartDate 103 CAST
  • Perl 中的非阻塞/异步执行

    有没有办法实现非阻塞 异步执行 无需fork http perldoc perl org functions fork html ing 在 Perl 中 我曾经是一名 Python 开发人员很多年了 Python 有非常出色的 Twist
  • Vagrant 端口转发在 Mavericks 上不起作用

    我正在使用一个流浪的 Geodjango 盒子 https github com david wilson vagrant geodjango base并且端口转发对我不起作用 在盒子上 我运行了 python manage py runs
  • 运行时更改进度对话框消息

    我有一个相当简单的问题 我不知道如何解决 我想在进度对话框运行和显示时更改其消息文本 一个例子是 剩余时间 计数器 它会在进度动画旋转时进行倒计时 我不确定如何解决这个问题 因为即使在正在运行的线程中执行progressDialog set
  • 如何在 C# 中将名字和姓氏的首字母大写?

    有没有一种简单的方法可以将字符串的第一个字母大写并降低其余字母 有内置方法还是我需要自己制作 TextInfo ToTitleCase 将字符串的每个标记中的第一个字符大写 如果不需要维护 Acronym Uppercasing 那么您应该
  • php mysql jquery AJAX 自动完成区分大小写

    在我的 php 脚本中 names GET part result mysql query SELECT FROM namestable where names LIKE names LIMIT 10 while row mysql fet
  • CSS 将元素保持在屏幕上的“固定”位置

    我正在寻找一种使用 CSS 在浏览器屏幕上创建 固定 HTML 对象的技巧 我希望它始终保持在同一位置 即使用户滚动文档时也是如此 我不确定这个的正确术语是什么 它就像 Facebook 上的聊天按钮或某些网站上的反馈按钮 在整个页面中跟随
  • 方法封装的性能成本

    封装方法有性能成本吗 一个非常简短 随意的例子 public static decimal Floor decimal value return Math Floor value 上面的函数会被内联吗 如果是这样 它是否与从代码中调用 Ma
  • 如何在类方法 Objective C 中访问 self

    我有一个使用类方法的实用程序类 我试图在类方法中引用 self 但不能 我想知道如何在类方法中声明以下内容 MRProgressOverlayView showOverlayAddedTo self window animated YES
  • UITableView tableFooterView 显示在 UITableView 的顶部 - 错误

    我创建了一个非常简单的测试用例来重现这个问题 我正在尝试以编程方式将页脚视图设置为表格视图 请注意 我指的是表格视图最底部的页脚 而不是部分页脚 大多数堆栈溢出答案都会使他们感到困惑 这是我的非常简单的代码 void viewDidLoad
  • 矩形相交

    是否有任何已知的方法来计算两个矩形之间的相交矩形 我的意思是 如果矩形 A 由 x1 y2 x2 y2 定义 B 由 x3 y3 x4 y4 定义 那么如何计算相交矩形 C x5 y5 x6 y6 的坐标 Thanks 相交多边形的一般问题
  • 使用三点系统计算模型中的压痕深度?

    通过光线投射 我们可以选择游戏对象碰撞器上的一个点 在简短的视觉效果中 三个点用小球体表示 表示用户选择 我们的愿望是计算模型压痕中任何点的深度 当前的想法是使用一种系统 其中用户选择压痕深度之外的两个点和压痕深度内的一个点来计算压痕深度
  • 在Windows中,以这样的方式杀死批处理文件,其子文件也被杀死

    我需要开始一个exe from a cmd 包装 exe 以便我可以提供一些命令行选项 问题是 仅从 cmd 调用 exe 并不能使包装完全透明 如果 exe 挂起 终止 cmd 不会终止该 exe 我也需要它来杀死exe 我可以在普通 W
  • 如果 T-SQL 事务被取消,是否会回滚?

    匆忙中 我愚蠢地运行了一条语句来更新表 而没有用where陈述 于是它开始更新表中的所有记录 我立即注意到该错误并点击了 SQL Server Management Studio 中的 取消执行 按钮 但花了一分钟才停止运行 所以我的问题是
  • 嗅探器找不到 DJANGO_SETTINGS_MODULE

    我正在尝试在开发过程中进行更改后自动重新运行测试 搜索了一下之后sniffer http pypi python org pypi sniffer看起来不错 但如果我运行它 我的测试会失败并出现以下错误 ERROR Failure Impo
  • 如何将“active”类添加到 wp_nav_menu() 当前菜单项(简单方法)

    我正在使用入门主题 Underscores 和 Bootstrap 创建自定义 Wordpress 主题 我想修改wp nav menu以便它分配当前菜单项 active类而不是默认类 current menu item 我需要这个才能使用
  • 事件侦听器在没有事件的情况下执行并循环遍历 HTML 集合

    我正在尝试编写一个循环来初始化 JavaScript 中的事件处理程序 我认为我做错了什么 因为我的调试功能在没有事件 点击 发生的情况下被激活 我想做的是这样的 var JS elements document getElementsBy
  • Ada T'Class 的基础知识

    虽然有点不好意思问这个问题 但我知道这是最好的 我已经使用 Ada 编程很多年了 并且几乎可以流利地理解该语言的每个部分 然而 我似乎始终无法完全理解 T Class 借用别人的话 有人可以 像我五岁一样解释一下吗 编辑 我买它只是为了拥有