IsOrdered метод расширения
This commit is contained in:
parent
4c56298bfb
commit
255533f407
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
||||||
public const string Major = "3";
|
public const string Major = "3";
|
||||||
public const string Minor = "10";
|
public const string Minor = "10";
|
||||||
public const string Build = "3";
|
public const string Build = "3";
|
||||||
public const string Revision = "3619";
|
public const string Revision = "3620";
|
||||||
|
|
||||||
public const string MainVersion = Major + "." + Minor;
|
public const string MainVersion = Major + "." + Minor;
|
||||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
%MINOR%=10
|
|
||||||
%REVISION%=3619
|
|
||||||
%COREVERSION%=3
|
%COREVERSION%=3
|
||||||
|
%REVISION%=3620
|
||||||
|
%MINOR%=10
|
||||||
%MAJOR%=3
|
%MAJOR%=3
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
3.10.3.3619
|
3.10.3.3620
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
!define VERSION '3.10.3.3619'
|
!define VERSION '3.10.3.3620'
|
||||||
|
|
|
||||||
|
|
@ -11195,6 +11195,66 @@ begin
|
||||||
Result := Self.OrderByDescending(x -> x, System.StringComparer.Ordinal);
|
Result := Self.OrderByDescending(x -> x, System.StringComparer.Ordinal);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по возрастанию
|
||||||
|
function IsOrdered<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (prev.CompareTo(current) > 0) then
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по возрастанию в порядке, заданном компаратором comparer
|
||||||
|
function IsOrdered<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (comparer.Compare(prev, current) > 0) then
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по убыванию
|
||||||
|
function IsOrderedDescending<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (prev.CompareTo(current) < 0) then
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по убыванию в порядке, заданном компаратором comparer
|
||||||
|
function IsOrderedDescending<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (comparer.Compare(prev, current) < 0) then // Обратный знак
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
/// Возвращает множество HashSet по данной последовательности
|
/// Возвращает множество HashSet по данной последовательности
|
||||||
function ToHashSet<T>(Self: sequence of T): HashSet<T>; extensionmethod;
|
function ToHashSet<T>(Self: sequence of T): HashSet<T>; extensionmethod;
|
||||||
begin
|
begin
|
||||||
|
|
@ -13342,13 +13402,49 @@ begin
|
||||||
System.Array.Copy(a,Self,a.Length);
|
System.Array.Copy(a,Self,a.Length);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
/// Возвращает индекс последнего элемента массива
|
/// Возвращает индекс последнего элемента массива
|
||||||
function High(Self: System.Array); extensionmethod := High(Self);
|
function High(Self: System.Array); extensionmethod := High(Self);
|
||||||
|
|
||||||
/// Возвращает индекс первого элемента массива
|
/// Возвращает индекс первого элемента массива
|
||||||
function Low(Self: System.Array); extensionmethod := Low(Self);
|
function Low(Self: System.Array); extensionmethod := Low(Self);
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив по возрастанию
|
||||||
|
function IsOrdered<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if self[i].CompareTo(self[i + 1]) > 0 then
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив в порядке, заданном компаратором comparer
|
||||||
|
function IsOrdered<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if comparer.Compare(self[i], self[i + 1]) > 0 then
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив по убыванию
|
||||||
|
function IsOrderedDescending<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if self[i].CompareTo(self[i + 1]) < 0 then
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив по убыванию в порядке, заданном компаратором comparer
|
||||||
|
function IsOrderedDescending<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if comparer.Compare(self[i], self[i + 1]) < 0 then // Обратный знак
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
/// Возвращает последовательность индексов одномерного массива
|
/// Возвращает последовательность индексов одномерного массива
|
||||||
function Indices<T>(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1);
|
function Indices<T>(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11195,6 +11195,66 @@ begin
|
||||||
Result := Self.OrderByDescending(x -> x, System.StringComparer.Ordinal);
|
Result := Self.OrderByDescending(x -> x, System.StringComparer.Ordinal);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по возрастанию
|
||||||
|
function IsOrdered<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (prev.CompareTo(current) > 0) then
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по возрастанию в порядке, заданном компаратором comparer
|
||||||
|
function IsOrdered<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (comparer.Compare(prev, current) > 0) then
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по убыванию
|
||||||
|
function IsOrderedDescending<T>(self: sequence of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (prev.CompareTo(current) < 0) then
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирована ли последовательность по убыванию в порядке, заданном компаратором comparer
|
||||||
|
function IsOrderedDescending<T>(self: sequence of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
var prev: T;
|
||||||
|
var first := True;
|
||||||
|
foreach var current in self do
|
||||||
|
begin
|
||||||
|
if not first and (comparer.Compare(prev, current) < 0) then // Обратный знак
|
||||||
|
exit(False);
|
||||||
|
prev := current;
|
||||||
|
first := False;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
/// Возвращает множество HashSet по данной последовательности
|
/// Возвращает множество HashSet по данной последовательности
|
||||||
function ToHashSet<T>(Self: sequence of T): HashSet<T>; extensionmethod;
|
function ToHashSet<T>(Self: sequence of T): HashSet<T>; extensionmethod;
|
||||||
begin
|
begin
|
||||||
|
|
@ -13342,13 +13402,49 @@ begin
|
||||||
System.Array.Copy(a,Self,a.Length);
|
System.Array.Copy(a,Self,a.Length);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
/// Возвращает индекс последнего элемента массива
|
/// Возвращает индекс последнего элемента массива
|
||||||
function High(Self: System.Array); extensionmethod := High(Self);
|
function High(Self: System.Array); extensionmethod := High(Self);
|
||||||
|
|
||||||
/// Возвращает индекс первого элемента массива
|
/// Возвращает индекс первого элемента массива
|
||||||
function Low(Self: System.Array); extensionmethod := Low(Self);
|
function Low(Self: System.Array); extensionmethod := Low(Self);
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив по возрастанию
|
||||||
|
function IsOrdered<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if self[i].CompareTo(self[i + 1]) > 0 then
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив в порядке, заданном компаратором comparer
|
||||||
|
function IsOrdered<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if comparer.Compare(self[i], self[i + 1]) > 0 then
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив по убыванию
|
||||||
|
function IsOrderedDescending<T>(self: array of T): boolean; extensionmethod; where T: System.IComparable<T>;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if self[i].CompareTo(self[i + 1]) < 0 then
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
/// Проверяет, отсортирован ли массив по убыванию в порядке, заданном компаратором comparer
|
||||||
|
function IsOrderedDescending<T>(self: array of T; comparer: IComparer<T>): boolean; extensionmethod;
|
||||||
|
begin
|
||||||
|
for var i := 0 to self.High - 1 do
|
||||||
|
if comparer.Compare(self[i], self[i + 1]) < 0 then // Обратный знак
|
||||||
|
exit(False);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
/// Возвращает последовательность индексов одномерного массива
|
/// Возвращает последовательность индексов одномерного массива
|
||||||
function Indices<T>(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1);
|
function Indices<T>(Self: array of T): sequence of integer; extensionmethod := Range(0, Self.Length - 1);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue