gpt4 book ai didi

delphi - 如何获取通用 TList 中的最大值?

转载 作者:行者123 更新时间:2023-12-03 15:15:13 28 4
gpt4 key购买 nike

获得 TList<Integer> 中的最大值的最简单方法是什么? ?

function GetMaximum(AList: TList<Integer>): Integer;
begin
Assert(AList.Count > 0);
Result := ?;
end;

我读到 C# 有一个 AList.Max ,Delphi中有类似的东西吗?

最佳答案

这是一个在通用容器上实现 MaxValue 的有趣示例:

{$APPTYPE CONSOLE}

uses
System.SysUtils, System.Generics.Defaults, System.Generics.Collections;

type
TMyList<T> = class(TList<T>)
public
function MaxValue: T;
end;

{ TMyList<T> }

function TMyList<T>.MaxValue: T;
var
i: Integer;
Comparer: IComparer<T>;
begin
if Count=0 then
raise Exception.Create('Cannot call TMyList<T>.MaxValue on an empty list');
Comparer := TComparer<T>.Default;
Result := Self[0];
for i := 1 to Count-1 do
if Comparer.Compare(Self[i], Result)>0 then
Result := Self[i];
end;

var
IntList: TMyList<Integer>;
DoubleList: TMyList<Double>;
StringList: TMyList<string>;

begin
IntList := TMyList<Integer>.Create;
IntList.AddRange([10, 5, 12, -49]);
Writeln(IntList.MaxValue);

DoubleList := TMyList<Double>.Create;
DoubleList.AddRange([10.0, 5.0, 12.0, -49.0]);
Writeln(DoubleList.MaxValue);

StringList := TMyList<string>.Create;
StringList.AddRange(['David Heffernan', 'Uwe Raabe', 'Warren P', 'Jens Mühlenhoff']);
Writeln(StringList.MaxValue);

Readln;
end.

因为我们无法想出与 low(Integer) 等价的泛型,所以当在空列表上调用该方法时,我会引发异常。

输出为:

12 1.20000000000000E+0001Warren P

关于delphi - 如何获取通用 TList<Integer> 中的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139830/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com