/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
CodeExamples/Typeclasses/Others/TypeclassTranslation.pas
33 строки
687 B
Voloshin Bogdan
Rearrange Typeclass examples
10 июн 2018, 22:20
10 июн 2018, 22:20
3446717
Код
Авторство
О чём код?
type ConceptAttribute = class(System.Attribute) end; IsConceptParameterAttribute = class(System.Attribute) end; ExplicitModelAttribute = class(System.Attribute) end; [Concept] SumTC<T> = abstract class public function sum(v1, v2: T): T; abstract; end; SumTC_Integer = class(SumTC<integer>) public function sum(v1, v2: Integer): Integer; override; begin Result := v1 + v2; end; end; function Sum3<T, SumTCT>(v1, v2, v3: T): T; where SumTCT: SumTC<T>, constructor; begin var s := __ConceptSingleton&<SumTCT>.&Instance; Result := s.sum(v1, s.sum(v2, v3)); end; begin write(Sum3&<integer, SumTC_integer>(1, 2, 3)); end.