我有一个名为Linked_List(.ads)的包。下面是代码:
// mix-service.js
var Mix = require('../models/mix');
module.exports = {
mixTitle: function(mix_id) {
return Mix
.findOne({ 'mix_id' : mix_id }, 'title')
.then(mix => {
console.log(mix.title); // This correctly prints the title field
return mix.title;
});
}
};
// calling module
var mixSrvc = require('../mix-service');
mixSrvc
.mixTitle(1)
.then(mixTitle => console.log(mixTitle))
.catch(err => console.log(err));
以下是包中包含main函数(main.adb)
的代码Generic
type T is private;
package Linked_List is
type List is tagged record
Data : T;
end record;
end Linked_List;
我收到此错误:
with Ada.Text_IO; use Ada.Text_IO;
with Linked_List;
procedure Main is
type ListOfIntegers is new Linked_List(T => Integer);
begin
null;
end Main;
感谢任何帮助。
答案 0 :(得分:5)
new Linked_List(T => Integer)
定义了一个新的包,而不是新的类型。您获得的错误消息是因为编译器认为您正在声明类型,因此在第30列看到包的名称会使其混淆;它想看到(子)类型的名称。
第4行应该是
package ListOfIntegers is new Linked_List(T => Integer);
之后有一个类型ListOfIntegers.List
,所以你可以写
My_List : ListOfIntegers.List;
你可能会发现不得不说ListOfIntegers.
一直很烦人;你可以说
use ListOfIntegers;
之后你可以写
My_List : List;
但通常认为最好不要过度使用(如果你有几十个“软件”包,“使用”它们都会让你很难知道你指的是哪个)。
顺便说一下,正常的Ada用法是使用下划线来分隔标识符中的单词:List_Of_Names
。