Ограничения на параметры обобщенных классов: различия между версиями

Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
(Новая: == Ссылки == *Особенности языка: продвинутый уровень *[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalAB...)
 
Нет описания правки
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
Секция where задает условия на параметры обобщенных подпрограмм и классов.
В данном случае для вычисления минимального элемента массива его элементы должны удовлетворять интерфейсу System.IComparable, т.е. быть сравнимыми на "меньше".
<source lang="Delphi">function MinElem<T>(a: array of T): T;
where T: System.IComparable;
begin
  Result := a[0];
  for var i:=1 to a.Length-1 do
    if a[i].CompareTo(Result)<0 then
      Result := a[i];
end;
begin
  var a : array of integer := (2,1,8,4,7);
  writeln(MinElem(a));
  var ss : array of string := ('Иванов ','Астахов','Петров','Абдурахманов','Попов');
  writeln(MinElem(ss));
end.</source>
== Ссылки ==
== Ссылки ==
*[[Особенности языка: продвинутый уровень]]
*[[Особенности языка: продвинутый уровень]]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]
*[http://pascalabc.net/ru/bazovyie-osobennosti-yazyika-i-bibliotek.html Сайт PascalABC.NET: Особенности языка]

Текущая версия от 08:29, 16 января 2010

Секция where задает условия на параметры обобщенных подпрограмм и классов. В данном случае для вычисления минимального элемента массива его элементы должны удовлетворять интерфейсу System.IComparable, т.е. быть сравнимыми на "меньше".

function MinElem<T>(a: array of T): T;
where T: System.IComparable;
begin
  Result := a[0];
  for var i:=1 to a.Length-1 do
    if a[i].CompareTo(Result)<0 then
      Result := a[i];
end;

begin
  var a : array of integer := (2,1,8,4,7);
  writeln(MinElem(a));
  var ss : array of string := ('Иванов ','Астахов','Петров','Абдурахманов','Попов');
  writeln(MinElem(ss));
end.

Ссылки