Incremental - пока закомментировал перегруженные версии, вызывающие ошибку считывания PCU

This commit is contained in:
miks1965 2016-07-31 14:39:46 +03:00
parent e6f4a08cc1
commit 0e68afcd76
6 changed files with 120 additions and 5 deletions

View file

@ -15,7 +15,7 @@ internal static class RevisionClass
public const string Major = "3";
public const string Minor = "1";
public const string Build = "0";
public const string Revision = "1288";
public const string Revision = "1290";
public const string MainVersion = Major + "." + Minor;
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;

View file

@ -1,4 +1,4 @@
%MINOR%=1
%REVISION%=1288
%REVISION%=1290
%COREVERSION%=0
%MAJOR%=3

View file

@ -1 +1 @@
!define VERSION '3.1.0.1288'
!define VERSION '3.1.0.1290'

View file

@ -8345,6 +8345,121 @@ begin
Result := Self.Skip(from).Where((x,i)->i mod step = 0).Take(count)
end;
// Дополнения июль 2016: Incremental
///--
{function IncrementalSeq(Self: sequence of integer): sequence of integer;
begin
var iter := Self.GetEnumerator();
if iter.MoveNext() then
begin
var prevItem := iter.Current;
while iter.MoveNext() do
begin
var nextItem := iter.Current;
yield nextItem - prevItem;
prevItem := nextItem;
end
end
end;
///--
function IncrementalSeq(Self: sequence of real): sequence of real;
begin
var iter := Self.GetEnumerator();
if iter.MoveNext() then
begin
var prevItem := iter.Current;
while iter.MoveNext() do
begin
var nextItem := iter.Current;
yield nextItem - prevItem;
prevItem := nextItem;
end
end
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: sequence of integer): sequence of integer; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: array of integer): sequence of integer; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: List<integer>): sequence of integer; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: LinkedList<integer>): sequence of integer; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: sequence of real): sequence of real; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: array of real): sequence of real; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: List<real>): sequence of real; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности
function Incremental(Self: LinkedList<real>): sequence of real; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;}
/// Возвращает последовательность разностей соседних элементов исходной последовательности. В качестве функции разности используется func
function Incremental<T,T1>(Self: sequence of T; func: (T,T)->T1): sequence of T1; extensionmethod;
begin
var iter := Self.GetEnumerator();
if iter.MoveNext() then
begin
var prevItem := iter.Current;
while iter.MoveNext() do
begin
var nextItem := iter.Current;
yield func(prevItem,nextItem);
prevItem := nextItem;
end
end
end;
/// Возвращает последовательность разностей соседних элементов исходной последовательности. В качестве функции разности используется func
function Incremental<T,T1>(Self: sequence of T; func: (T,T,integer)->T1): sequence of T1; extensionmethod;
begin
var iter := Self.GetEnumerator();
if iter.MoveNext() then
begin
var ind := 0;
var prevItem := iter.Current;
while iter.MoveNext() do
begin
var nextItem := iter.Current;
ind += 1;
yield func(prevItem,nextItem,ind);
prevItem := nextItem;
end
end
end;
// -----------------------------------------------------
//>> Методы расширения типа List<T> # Extension methods for List T
// -----------------------------------------------------

Binary file not shown.

View file

@ -8347,7 +8347,7 @@ end;
// Дополнения июль 2016: Incremental
///--
function IncrementalSeq(Self: sequence of integer): sequence of integer;
{function IncrementalSeq(Self: sequence of integer): sequence of integer;
begin
var iter := Self.GetEnumerator();
if iter.MoveNext() then
@ -8424,7 +8424,7 @@ end;
function Incremental(Self: LinkedList<real>): sequence of real; extensionmethod;
begin
Result := IncrementalSeq(Self);
end;
end;}
/// Возвращает последовательность разностей соседних элементов исходной последовательности. В качестве функции разности используется func
function Incremental<T,T1>(Self: sequence of T; func: (T,T)->T1): sequence of T1; extensionmethod;