繁体   English   中英

声明通用类型为“通用类型”

[英]declaring a generic type “of a generic type”

不完全确定如何提出这个问题,但是我使用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方面的限制,还是我缺少某些东西? 任何帮助是极大的赞赏

我不确定

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

就是要在这里实现。 如果您要扩展接口,则需要类似

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

可以在Delphi中编译。 我没有Lazarus要测试。

如果这不是您要尝试的操作,我将删除答案。

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

Afaik您仍然应该声明IOtherInterface,以后使用TSomething对其进行专门化。

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

无论如何,FPC修复程序存在双重专业化问题,它将>>或<<视为移位令牌。 这是固定在行李箱中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM