首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声明“泛型类型”的泛型类型

声明“泛型类型”的泛型类型
EN

Stack Overflow用户
提问于 2018-03-09 11:02:26
回答 2查看 135关注 0票数 0

不确定如何提出这个问题,但是使用lazarus v1.8.2,我尝试定义一个泛型类型,使用另一个泛型类型:

代码语言:javascript
复制
//initial interface
  IOtherInterface<T> = interface
    function ExampleFunction : T;
  end;
  //some generic record
  TSomething<T> = record
    Something : T;
  end;
 //attempting to further genericize
  IOtherSomething<T> = IOtherInterface<TSomething<T>>;

我收到的错误是:Fatal: Syntax error, "," expected but "<" found

我使用了delphi模式,因为我想保持对这两个编译器的兼容。我很有信心,我以前在delphi中做过这种专门化,但没有很好的途径来测试专业版本。这是对FPC方面的限制,还是我错过了什么?非常感谢您的任何帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-03-09 17:20:19

我不确定是什么

代码语言:javascript
复制
 IOtherSomething<T> = IOtherInterface<TSomething<T>>;

是要在这里实现的。如果你想扩展这个接口,你需要像这样的东西

代码语言:javascript
复制
IOtherSomething<T> = interface(IOtherInterface<TSomething<T>>)
end;

它可以在Delphi中编译。我不需要拉撒路来测试。

如果这不是你想要做的,我会删除答案。

如果是,我将进行编辑以删除这些注释。

票数 1
EN

Stack Overflow用户

发布于 2018-03-09 16:49:00

你仍然应该声明IOtherInterface,然后用TSomething来专门化它。

Generics.Collections是这样工作的( TPair扮演TSomething的角色)。

无论如何,FPC修复了一个双重专门化的问题,它将>>或<<视为移位标记。这是在主干中修复的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49185938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档