声明泛型类型的通用类型""

时间:2018-03-09 03:02:26

标签: delphi freepascal

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

//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方面的限制,还是我错过了什么?非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

我不确定是什么

 IOtherSomething<T> = IOtherInterface<TSomething<T>>;

意在这里实现。如果您尝试扩展界面,则需要类似

的内容
IOtherSomething<T> = interface(IOtherInterface<TSomething<T>>)
end;

在Delphi中编译。我没有拉撒路来测试。

如果这不是您要做的,我将删除答案。

如果是,我会编辑删除这些评论。

答案 1 :(得分:0)

Afaik你还应该声明IOtherInterface,然后将它专门用于TSomething。

Generics.Collections以这种方式工作(TPair扮演TSomething的角色)。

无论如何,FPC修复有双重特化的问题,它看到&gt;&gt;或&lt;&lt;作为转移代币。这在主干

中修复