作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下程序 (main.adb) 将无法编译,并出现错误:
main.adb:10:15: expected private type "ThreadName" defined at config.ads:5
main.adb:10:15: found private type "Ada.Strings.Unbounded.Unbounded_String"
main.adb:11:45: expected private type "Ada.Strings.Unbounded.Unbounded_String"
main.adb:11:45: found private type "ThreadName" defined at config.ads:5
然而,当我添加一个“使用配置;”条款并删除配置。在 main.adb 中 MyName 声明的前缀,它编译干净并正常工作。我明白使用“use”子句只是为了让我避免使用 namespace 前缀,但它似乎还有很多作用。谁能解释一下?
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
package Config is
type ThreadName is new Unbounded_String;
end Config;
我的 main.adb 包含:
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Config;
procedure Main is
MyName : Config.ThreadName;
begin
MyName := To_Unbounded_String ("Chris");
Put_Line ( "The name is: " & To_String (MyName));
end Main;
最佳答案
Use 还使对包中定义的类型的隐式定义的操作可见......在此示例中包括 To_Unbounded_String 反之亦然。
还有 Use Type 使操作可见,而不会用包中的所有内容污染命名空间;但它只公开运算符(+、-、= 等),而
with Config;
use all type Config.Threadname;
将使
Config.Threadname
的类型、运算符和其他子程序可见不暴露包中的其他任何东西。
关于ada - "use"的使用。它不仅仅消除了对前缀的需要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64593623/
我是一名优秀的程序员,十分优秀!