В F # Interactive (fsi) вы можете использовать AddPrinter
или AddPrinterTransformer
, чтобы обеспечить отличную печать для типа в интерактивном сеансе. Как добавить такой принтер для универсального типа? Используя подстановочные _
для данного типа не работает:Как добавить красивый принтер для универсального типа в fsi?
> fsi.AddPrinter(fun (A : MyList<_>) -> A.ToString());;
Принтер просто не используется.
Ввод в параметре типа также дает предупреждение:
> fsi.AddPrinter(fun (A : MyList<'T>) -> A.ToString());;
fsi.AddPrinter(fun (A : MyList<'T>) -> A.ToString());;
-------------------------------^^
d:\projects\stdin(70,51): warning FS0064: This construct causes code
to be less generic than indicated by the type annotations. The type
variable 'T been constrained to be type 'obj'.
, который не то, что я хочу, либо.
Я уверен, что это невозможно. Тип arg требует конкретного типа. – Daniel
Можете ли вы переопределить 'ToString' для' MyList <'T> '? – Daniel