簡體   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