Ada:包装概念[关闭]

2023-12-12

这是我之前的帖子的后续内容:

Ada:了解私有类型并了解包装

一个实现Rectangular类型是使用一种实现来制作的,即Rectangular_Method_1此实现需要一个规范文件和一个主体文件。

如果我们想要另一个实现Rectangular_Method_2然后是主文件可供用户使用rectangular_Form.ads可以改为

-- with Rectangular_Method_1;
-- package Rectangular_Form renames Rectangular_Method_1;
with Rectangular_Method_2;
package Rectangular_Form renames Rectangular_Method_2;

问题

  1. 这是软件工程中允许另一种实现的正确方法吗?test_rectangular_form.adb对于不同的实现仍然相同吗?

  2. 如果我们创建第二个实现Rectangular_Method_2,除了这个新的实施的强制性新主体之外,是否还需要创建一个单独的规范文件?然而,需要提供相同的过程/功能Vector_Basis_r, Set_Horz, Get_Horz等在新的实现中,以便我们可以调用它们test_rectangular_form.adb.

谢谢...


如果您使用 GNAT,则可以在项目中使用 GPR 文件。您可以在其中更改特定包的文件名,例如:

for Specification (Rectangular_Form) use "Rectangular_Method_1.ads";
for Implementation (Rectangular_Form) use "Rectangular_Method_1.adb";

您甚至可以根据环境变量进行设置。

如果您的规范文件看起来都应该相同,您可以使用Rectangular_Form.ads并且仅使用上面的实现行。

GPR 文件示例如下所示:

project Example is

   type Methods is ("normal", "something_else");
   Method : Methods := external ("METHOD", "normal");

   package Naming is
      case Method is
         when "normal" =>
            for Implementation ("Example") use "example_normal.adb";
         when "something_else" =>
            for Implementation ("Example") use "example_something.adb";
      end case;
   end Naming;

end Example;

然后,您可以使用gnatmake -P example.gpr根据你的情况来编译它METHOD变量,或使用-XMETHOD=...gnatmake 的参数或仅使用提供的默认值。

The example_*.adb都应该包含包的主体Example, not Example_Normal, etc..

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

Ada:包装概念[关闭] 的相关文章

  • 安装过程中从互联网下载数据的包

    有谁知道有一个包在安装过程中从互联网下载数据集 然后准备并保存它 以便在使用加载包时可用library packageName 这种方法是否有任何缺点 除了明显的缺点 如果数据源不可用或数据格式已更改 包安装将失败 EDIT 一些背景 这些
  • 如何创建我自己的 Android 库并托管它

    我正在努力创建一个登录屏幕 以便与多个不同的 Android 应用程序一起使用 打包它的最佳方式是什么 以便其他人可以在他们的应用程序上使用我的登录功能 最好是在我们进行更改时自动同步它们 编辑 看来将其打包到库模块中是最好的选择 如何上传
  • Ada - 提出可访问性检查

    我从Github下载了这个程序 https github com raph amiard ada synth lib https github com raph amiard ada synth lib 我尝试了第一个例子 但遇到了一个例外
  • 将从 C 例程分配的数组传递给 Ada

    将结构 记录数组从 Ada 传递到 C 例程是一回事 在本例中 内存管理是在 Ada 中完成的 但是在与第三方库接口时经常会出现这样的问题 内存管理是在C部分完成的 例如 对于 C 结构 typedef struct MYREC int n
  • 防止创建配置文件

    我正在尝试构建一个包 其中包含一些文件 etc那些不是配置 它们包含在conffiles即使我创建一个空的也自动package conffiles in the debian目录 我怎样才能停下来dh installdeb这样做 我不确定我
  • 如何为不同的环境使用相同的路径创建RPM子包?

    我想使用 rpm 为不同环境 实时 测试 开发人员 构建相同文件的子包 因此有一个名为 name config live 的包 一个名为 name config testing 的包 一个名为 name config 的包 develope
  • 什么是“libgnarl”?

    What is libgnarl 我在不同的地方找到了对此的引用 例如在 gcc 源代码中或 gprbuild 的详细输出中 gprbuild 特别报告了有关决定是否libgnarl甚至是必要的 所以它显然是一个可选库 但实际的库是什么 我
  • 用pynsist打包PyGObject Python 3程序?

    我想用 pynsist 打包一个 Python3 PyGObject 程序 该存储库有一个 PyGTK 的示例 它让我认为更改该示例应该不会太难 该示例可以在这里找到 https github com takluyver pynsist t
  • Ada 中的字符串数组

    我在 Ada95 中有一个程序 我必须在其中创建一个字符串数组 该数组可以包含可变长度的字符串 例子 我已经声明了一个数组 其中所有索引都可以存储大小为 50 的字符串 当我为上面的数组分配一个较小的字符串时 我收到 约束错误 Code p
  • 如何在不使用子进程的情况下从 python 自动脚本中运行 python 'sdist' 命令?

    我正在编写一个脚本来自动打包 自制 python 模块并将其分发到远程计算机上 我正在使用 Pip 并创建了一个 setup py 文件 但随后我必须调用子进程模块来调用 python setup py sdist 命令 我已经查看了 di
  • 使用一个字段创建 Ada 记录

    我定义了一个类型 type Foo is record bar Positive end record 我想创建一个返回记录实例的函数 function get foo return Foo is return 1 end get foo
  • Gradle:找不到提供的方法()

    这是首选 https virgo47 wordpress com 2015 05 13 why gradle doesnt provide provided provided or provided group这是哪里有记录的 https
  • Ada.Containers.Functional_Maps 在 Ada2012 中可用吗?

    有关的信息Ada Containers Functional Maps https docs adacore com gnat rm docs html gnat rm gnat rm the gnat library html ada c
  • 打包Python项目时设置zip_safe为True有什么好处?

    setuptools 文档仅说明 为了获得最佳性能 Python 包最好安装为 zip 文件 然而 并非所有包都能够以压缩形式运行 因为它们可能期望能够像正常操作系统文件一样访问源代码或数据文件 因此 setuptools 可以将您的项目安
  • Ada:具有可变大小数组属性的对象

    我想在描述二维离散空间的包内创建一个标记类型 其大小在运行时确定 上下文 实施生命的游戏 https en wikipedia org wiki Conway 27s Game of Life 我发现的第一种方法是通用性 generic S
  • 如何在 pip 安装期间编译 C++ 依赖项?

    我想让我的 python 代码可以使用 pip 但是 我的代码依赖于另一个不可 pip 的库 所以 当用户调用时我需要以某种方式编译源代码pip install 我怎样才能做到这一点 我无法通过简单的谷歌搜索找到好的参考资料 我建议看看 l
  • 在 Ada 中立即开始循环的下一次迭代

    我想要一个无限循环 其中循环几乎贯穿整个程序 并且在任何时候 基于条件语句 我希望它退出循环的特定迭代并返回到顶部并执行 有办法做到这一点吗 它不必是无限循环 它可以是一个for循环 我只想让它进入该循环的下一次迭代 您可以使用 goto
  • 诊断 R 包构建错误:pdfLatex 不可用

    我正在尝试构建一个包R 我制作了骨架 并运行了命令R CMD check package1 我收到一个错误描述here https stackoverflow com questions 10819959 diagnosing r pack
  • Ada 的命令行参数

    我正在编写一个 Ada 程序 该程序应该对字母字符进行大小写转换 该程序使用 1 2 或 3 个命令行参数 我几乎已经把事情写下来了 但我不知道如何进行论证 命令行参数是 单个字符指定是否要进行大写转换或小写转换 应用于输入 U 或 u 表
  • Java EE6> 将 JSF Facelets (xhtml) 和 ManagedBeans 打包为 JAR

    是否可以将 JSF Facelets 和 ManagedBeans 打包到 JAR 文件中 这样我们就可以在不同的 war ear 项目中使用这个代码和 UI 组合了吗 我不是在谈论 JSF 组件 如果是的话 你能给我指一下教程或博客文章吗

随机推荐

  • R - 给定奥尔森时区的 UTC 到 LOCAL 时间

    我有 1974 2013 年的时间序列数据 其中有一列为 datetimeUTC YYYY MM DD hh mm 0000 一列为 Olson 格式的时区 例如 加拿大 太平洋 加拿大 东部 我可以将整个 UTCdatetime 列转换为
  • ListView WP8 中的增量加载

    我读过有关如何在滚动到列表视图底部时进行增量加载的文章 以及如何在滚动到列表顶部时实现延迟加载的文章 当用户到达顶部时 我想将更多项目添加到列表顶部 我们有什么办法可以实现这一目标吗 为此找到了解决方案 旋转两个控件 对于例如 gt
  • 2个php.ini文件

    我发现 当我在终端上输入以下内容时 php i grep php ini 我得到输出 加载的配置文件是 etc php5 cli php ini 然而 从phpinfo 我看到 加载的ini文件是 etc php5 apache2 php
  • Facebook API 限制

    我正在使用应用程序中的 Facebook Graph 和 FQL API 经过 OAuth 身份验证 我在文档中找不到有关速率限制 节流的任何内容 通常 我期望类 用户有某种限制 查看 Facebook 应用程序页面 Insigths gt
  • 如何使用node js将消息从Web服务器推送到浏览器

  • 为 Vaadin 8 Grid 实现列渲染器

    The 瓦丁框架指南有一个描述如何使用列渲染器的页面 in a 瓦丁网格 And 本页描述了渲染器的实现 但一切都太短暂了 我想实施一个InstantRenderer补充 Vaadin 8 1 中添加的部分 java time 渲染器集 添
  • Firebase RecyclerView:未连接适配器,跳过片段布局

    我有一个包含 3 个选项卡的 TabLayout 的活动 我正在尝试加载基于 Firebase 中的动态数据的 recyclerview 但 recyclerview 根本没有填充任何视图 我不确定它是否与 FragmentSectionP
  • 为什么在java中枚举被声明为 Enum> [重复]

    这个问题在这里已经有答案了 可能的重复 java 枚举定义 更好地表述问题 不被视为重复 如果 Enum 声明没有递归部分 Java 中会有什么不同 如果语言设计者简单地使用 Enum 这会对语言产生什么影响 现在唯一的区别是有人会写 A
  • 商业(付费)iPhone 应用程序是否必须向 Google 地图支付许可费用? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我知道商业网站会发生这种情况 所以我想知道使用 MapKit 的商业 iPhone 应用程序 尤其是那些产生大量流量的应用程序 是否也需要从 Google 地图获得任何类型的许可 我
  • 隐藏相机预览但仍收到预览回调

    我想在我的应用程序中显示过滤后的相机预览 我为此使用 Camera setPreviewCallback 我设法处理回调数据并在 OpenGL 视图中显示过滤后的图像 但我不知道如何隐藏原始相机预览并仍然接收预览回调 使表面视图 消失 或
  • Matlab 与 Mathematica,特征向量?

    function H calcHyperlinkMatrix M r c size M H zeros r c for i 1 r for j 1 c if M j i 1 colsum sum M 2 H i j 1 colsum j e
  • Expressjs bodyParser 和 connect-form

    我正在上传图像连接形式 但如果我使用它就不起作用bodyParser 相反 如果我不使用 bodyParser 我就无法上传文件 我怎样才能让他们一起玩 这是我的配置 app configure function app register
  • 防止 bash 脚本中的通配符

    我正在尝试编写一个对选定文件进行操作的脚本 bin bash ytest lastArgNo sPattern lastArgNo echo operating on sPattern do operation on sPattern fo
  • 与类加载相关的战争部署错误

    当我部署我的战争文件并运行它时 它会给出类似的错误 org springframework instrument classloading tomcat TomcatInstrumentableClassLoader Jan 6 2011
  • 将 ggplot 色阶渐变应用于部分数据

    我有一个关于应用 ggplot 的色阶渐变的问题 我有数据集 其中响应变量是连续变量 包括正数和负数 自变量是许多独立站点 我试图以这样的方式绘制数据 以便可以在背景中绘制所有数据 然后将色阶渐变应用于覆盖数据负范围的响应数据 这是迄今为止
  • 循环比休息更重要?

    我想在用户单击我的按钮时执行简单的代码 第一 将光标更改为 等待 下一步 执行循环 循环完成后 将光标更改回 默认 我写了这段代码 HTML
  • 对 RGB 值使用逻辑位移位

    当谈到按位逻辑时 我有点天真 我有一个可能是一个简单的问题 基本上 如果我有这个 是 ActionScript 但可以应用于多种语言 var color uint myObject color var red uint color gt g
  • 有没有好的 Markdown Javascript 库或控件? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我想建立一个网站 用户可以
  • text() R 函数 - 如何更改单个单词的字体?

    text x y font 2 text 更改整个 文本 的字体 但是是否可以更改 文本 中单个单词的字体 Yep plot new text 0 5 0 5 expression paste bold bold not bold 看一眼
  • Ada:包装概念[关闭]

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