Zip, Cartesian - сделаны внешние функции до 5 параметров, в т.ч. с проекцией
Zip, Cartesian - методы расширения дополнены чтобы было как во внешних Перегенерирована справка
This commit is contained in:
parent
35c7bc5877
commit
c4fd47128b
|
|
@ -15,7 +15,7 @@ internal static class RevisionClass
|
|||
public const string Major = "3";
|
||||
public const string Minor = "9";
|
||||
public const string Build = "0";
|
||||
public const string Revision = "3517";
|
||||
public const string Revision = "3520";
|
||||
|
||||
public const string MainVersion = Major + "." + Minor;
|
||||
public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
%MINOR%=9
|
||||
%REVISION%=3517
|
||||
%COREVERSION%=0
|
||||
%REVISION%=3520
|
||||
%MINOR%=9
|
||||
%MAJOR%=3
|
||||
|
|
|
|||
|
|
@ -2,7 +2,8 @@
|
|||
<param name="Keyword" value="Each">
|
||||
<param name="Keyword" value="EachCount">
|
||||
<param name="Keyword" value="Get">
|
||||
<param name="Keyword" value="operator"></object>
|
||||
<param name="Keyword" value="operator">
|
||||
<param name="Keyword" value="Update"></object>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Ìåòîäû ðàñøèðåíèÿ ñëîâàðåé</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code><b>function</b> Each<Key,Source,Res>(Self: <b>sequence </b> <b>of</b> System.Linq.IGrouping<Key,Source>; grOperation: System.Linq.IGrouping<Key,Source> -> Res): Dictionary<Key,Res>;</code>
|
||||
|
|
@ -15,7 +16,19 @@
|
|||
<br> Âîçâðàùàåò ÷àñòîòíûé ñëîâàðü îáúåêòîâ ïîñëåäîâàòåëüíîñòè</td></tr>
|
||||
<tr><td><code><b>function</b> Get<Key, Value>(Self: IDictionary<Key, Value>; K: Key; V: Value := default(Value)): Value;</code>
|
||||
<br> Âîçâðàùàåò â ñëîâàðå çíà÷åíèå, ñâÿçàííîå ñ óêàçàííûì êëþ÷îì, à åñëè òàêîãî êëþ÷à íåò, òî çíà÷åíèå ïî óìîë÷àíèþ</td></tr>
|
||||
<tr><td><code><b>function</b> operator-<TKey, TVal>(Self: Dictionary<TKey, TVal>; key: TKey): Dictionary<TKey, TVal>;</code>
|
||||
<br> Âîçâðàùàåò ñëîâàðü, â êîòîðîì èç èñõîäíîãî ñëîâàðÿ óäàëåí ýëåìåíò ñ äàííûì êëþ÷îì</td></tr>
|
||||
<tr><td><code><b>function</b> operator-<TKey, TVal>(Self: Dictionary<TKey, TVal>; keys: <b>sequence </b> <b>of</b> TKey): Dictionary<TKey, TVal>;</code>
|
||||
<br> Âîçâðàùàåò ñëîâàðü, â êîòîðîì èç èñõîäíîãî ñëîâàðÿ óäàëåíû âñå ýëåìåíòû ñ êëþ÷àìè, çàäàâàåìûìè âòîðûì îïåðàíäîì</td></tr>
|
||||
<tr><td><code><b>function</b> operator+<TKey, TVal>(Self: Dictionary<TKey, TVal>; dict: Dictionary<TKey, TVal>): Dictionary<TKey, TVal>;</code>
|
||||
<br> Îáúåäèíÿåò äàííûå â äâóõ ñëîâàðÿõ. Åñëè â îáîèõ èìåþòñÿ îäèíàêîâûå êëþ÷è, òî ñ êëþ÷îì ñâÿçûâàåòñÿ çíà÷åíèå èç âòîðîãî ñëîâàðÿ</td></tr>
|
||||
<tr><td><code><b>procedure</b> operator+=<TKey, TVal>(Self: Dictionary<TKey, TVal>; update: Dictionary<TKey, TVal>);</code>
|
||||
<br> Îáíîâëÿåò äàííûå â ñëîâàðå äàííûìè èç äðóãîãî ñëîâàðÿ</td></tr>
|
||||
<tr><td><code><b>procedure</b> operator-=<Key,Value>(Self: IDictionary<Key,Value>; k: Key);</code>
|
||||
<br> Операция удаления из словаря пары с указанным значением ключа</td></tr>
|
||||
<br> Óäàëÿåò èç ñëîâàðÿ ïàðû ñ óêàçàííûì çíà÷åíèåì êëþ÷à</td></tr>
|
||||
<tr><td><code><b>procedure</b> operator-=<Key,Value>(Self: IDictionary<Key,Value>; keys: <b>sequence </b> <b>of</b> Key);</code>
|
||||
<br> Óäàëÿåò èç ñëîâàðÿ ïàðû ñ óêàçàííûìè çíà÷åíèÿìè êëþ÷à</td></tr>
|
||||
<tr><td><code><b>procedure</b> Update<TKey, TVal>(Self: Dictionary<TKey, TVal>; update: Dictionary<TKey, TVal>);</code>
|
||||
<br> Îáíîâëÿåò äàííûå â ñëîâàðå äàííûìè èç äðóãîãî ñëîâàðÿ</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -6,7 +6,6 @@
|
|||
<param name="Keyword" value="CountOf">
|
||||
<param name="Keyword" value="Flatten">
|
||||
<param name="Keyword" value="ForEach">
|
||||
<param name="Keyword" value="function">
|
||||
<param name="Keyword" value="Incremental">
|
||||
<param name="Keyword" value="Interleave">
|
||||
<param name="Keyword" value="JoinToString">
|
||||
|
|
@ -43,9 +42,7 @@
|
|||
<param name="Keyword" value="ZipTuple"></object>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Ìåòîäû ðàñøèðåíèÿ ïîñëåäîâàòåëüíîñòåé</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code>{<b>function</b> Sum<T>(Self: <b>sequence </b> <b>of</b> T; f: T->BigInteger): BigInteger;</code>
|
||||
<br> Âîçâðàùàåò ñóììó ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè, ñïðîåêòèðîâàííûõ íà ÷èñëîâîå çíà÷åíèå - ïîêà íå ðàáîòàåò äëÿ Lst(1,2,3)</td></tr>
|
||||
<tr><td><code><b>function</b> AdjacentGroup<T>(Self: <b>sequence </b> <b>of</b> T): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
|
||||
<table border=0 cellpadding=5><tr><td><code><b>function</b> AdjacentGroup<T>(Self: <b>sequence </b> <b>of</b> T): <b>sequence </b> <b>of</b> <b>array</b> <b>of</b> T;</code>
|
||||
<br> Ãðóïïèðóåò îäèíàêîâûå ïîäðÿä èäóùèå ýëåìåíòû, ïîëó÷àÿ ïîñëåäîâàòåëüíîñòü ìàññèâîâ</td></tr>
|
||||
<tr><td><code><b>function</b> Average(Self: <b>sequence </b> <b>of</b> BigInteger): real;</code>
|
||||
<br> Âîçâðàùàåò ñðåäíåå ýëåìåíòîâ ïîñëåäîâàòåëüíîñòè</td></tr>
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
<param name="Keyword" value="ToBigInteger">
|
||||
<param name="Keyword" value="ToInteger">
|
||||
<param name="Keyword" value="ToIntegers">
|
||||
<param name="Keyword" value="ToLines">
|
||||
<param name="Keyword" value="ToReal">
|
||||
<param name="Keyword" value="ToReals">
|
||||
<param name="Keyword" value="ToWords">
|
||||
|
|
@ -80,6 +81,8 @@
|
|||
<br> Ïðåîáðàçóåò ñòðîêó â ìàññèâ öåëûõ</td></tr>
|
||||
<tr><td><code><b>function</b> ToIntegers(Self: string; N: integer): <b>array</b> <b>of</b> integer;</code>
|
||||
<br> Ñ÷èòûâàåò èç ñòðîêè ìàññèâ èç N öåëûõ</td></tr>
|
||||
<tr><td><code><b>function</b> ToLines(Self: string): <b>array</b> <b>of</b> string;</code>
|
||||
<br> Ïðåîáðàçóåò ìíîãîñòðî÷íóþ ñòðîêó â ìàññèâ ñòðîê</td></tr>
|
||||
<tr><td><code><b>function</b> ToReal(Self: string): real;</code>
|
||||
<br> Ïðåîáðàçóåò ñòðîêó â âåùåñòâåííîå</td></tr>
|
||||
<tr><td><code><b>function</b> ToReal(Self: string; defaultvalue: real): real;</code>
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@
|
|||
<param name="Keyword" value="Lst">
|
||||
<param name="Keyword" value="LstInt">
|
||||
<param name="Keyword" value="LstStr">
|
||||
<param name="Keyword" value="Pair">
|
||||
<param name="Keyword" value="SSet">
|
||||
<param name="Keyword" value="SSetInt">
|
||||
<param name="Keyword" value="SSetStr"></object>
|
||||
|
|
@ -20,8 +21,12 @@
|
|||
<br> Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå)</td></tr>
|
||||
<tr><td><code><b>function</b> Dict<TKey, TVal>(<b>params</b> pairs: <b>array</b> <b>of</b> (TKey, TVal)): Dictionary<TKey, TVal>;</code>
|
||||
<br> Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (êëþ÷, çíà÷åíèå)</td></tr>
|
||||
<tr><td><code><b>function</b> Dict<TKey, TVal>(pairs: <b>sequence </b> <b>of</b> KeyValuePair<TKey, TVal>): Dictionary<TKey, TVal>;</code>
|
||||
<br> Возвращает словарь пар элементов (ключ, значение), построенный по последовательности пар</td></tr>
|
||||
<tr><td><code><b>function</b> Dict<TKey, TVal>(pairs: <b>sequence </b> <b>of</b> (TKey, TVal)): Dictionary<TKey, TVal>;</code>
|
||||
<br> Возвращает словарь пар элементов (ключ, значение), построенный на значениях последовательности</td></tr>
|
||||
<br> Возвращает словарь пар элементов (ключ, значение), построенный по последовательности пар</td></tr>
|
||||
<tr><td><code><b>function</b> Dict<TKey, TVal>(keys: <b>sequence </b> <b>of</b> TKey; values: <b>sequence </b> <b>of</b> TVal): Dictionary<TKey, TVal>;</code>
|
||||
<br> Возвращает словарь пар элементов (ключ, значение), построенный по последовательностям ключей и значений</td></tr>
|
||||
<tr><td><code><b>function</b> DictInt(<b>params</b> pairs: <b>array</b> <b>of</b> (integer, integer)): Dictionary<integer, integer>;</code>
|
||||
<br> Âîçâðàùàåò ñëîâàðü ïàð ýëåìåíòîâ (öåëîå, öåëîå)</td></tr>
|
||||
<tr><td><code><b>function</b> DictStr(<b>params</b> pairs: <b>array</b> <b>of</b> (string, string)): Dictionary<string, string>;</code>
|
||||
|
|
@ -58,6 +63,8 @@
|
|||
<br> Âîçâðàùàåò ñïèñîê, çàïîëíåííûé óêàçàííûìè öåëûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> LstStr(<b>params</b> a: <b>array</b> <b>of</b> string): List<string>;</code>
|
||||
<br> Âîçâðàùàåò ñïèñîê, çàïîëíåííûé óêàçàííûìè öåëûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> Pair<TKey, TVal>(key: TKey; value: TVal): KeyValuePair<TKey, TVal>;</code>
|
||||
<br> Возвращает пару элементов (ключ, значение)</td></tr>
|
||||
<tr><td><code><b>function</b> SSet<T>(<b>params</b> a: <b>array</b> <b>of</b> T): SortedSet<T>;</code>
|
||||
<br> Âîçâðàùàåò ìíîæåñòâî íà áàçå áèíàðíîãî äåðåâà ïîèñêà, çàïîëíåííîå óêàçàííûìè çíà÷åíèÿìè</td></tr>
|
||||
<tr><td><code><b>function</b> SSet<T>(a: <b>sequence </b> <b>of</b> T): SortedSet<T>;</code>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@
|
|||
<param name="Keyword" value="SeqRandom">
|
||||
<param name="Keyword" value="SeqRandomInteger">
|
||||
<param name="Keyword" value="SeqRandomReal">
|
||||
<param name="Keyword" value="SeqWhile"></object>
|
||||
<param name="Keyword" value="SeqWhile">
|
||||
<param name="Keyword" value="Zip"></object>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251"><link rel="StyleSheet" href="../../../default.css">
|
||||
</HEAD><body><H1>Подпрограммы для генерации последовательностей</H1>
|
||||
<table border=0 cellpadding=5><tr><td><code><b>function</b> Iterate<T>(first: T; next: T->T): <b>sequence </b> <b>of</b> T;</code>
|
||||
|
|
@ -81,5 +82,21 @@
|
|||
<br> Возвращает последовательность элементов с начальным значением first,функцией next перехода от предыдущего к следующему и условием pred продолжения последовательности</td></tr>
|
||||
<tr><td><code><b>function</b> SeqWhile<T>(first, second: T; next: (T,T) ->T; pred: T->boolean): <b>sequence </b> <b>of</b> T;</code>
|
||||
<br> Возвращает последовательность элементов, начинающуюся с first и second,с функцией next перехода от двух предыдущих к следующему и условием pred продолжения последовательности</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1): <b>sequence </b> <b>of</b> (T, T1);</code>
|
||||
<br> Îáúåäèíÿåò äâå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü äâóõýëåìåíòíûõ êîðòåæåé</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1, T2>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; c: <b>sequence </b> <b>of</b> T2): <b>sequence </b> <b>of</b> (T, T1, T2);</code>
|
||||
<br> Îáúåäèíÿåò òðè ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü òðåõýëåìåíòíûõ êîðòåæåé</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1, T2, T3>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; c: <b>sequence </b> <b>of</b> T2; d: <b>sequence </b> <b>of</b> T3): <b>sequence </b> <b>of</b> (T, T1, T2, T3);</code>
|
||||
<br> Îáúåäèíÿåò ÷åòûðå ïîñëåäîâàòåëüíîñòè â ïîñëåäîâàòåëüíîñòü ÷åòûðåõýëåìåíòíûõ êîðòåæåé</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1, T2, T3, T4>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; c: <b>sequence </b> <b>of</b> T2; d: <b>sequence </b> <b>of</b> T3; e: <b>sequence </b> <b>of</b> T4): <b>sequence </b> <b>of</b> (T, T1, T2, T3, T4);</code>
|
||||
<br> Îáúåäèíÿåò ïÿòü ïîñëåäîâàòåëüíîñòåé â ïîñëåäîâàòåëüíîñòü ïÿòèýëåìåíòíûõ êîðòåæåé</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1, TRes>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; fun: (T,T1) -> TRes): <b>sequence </b> <b>of</b> TRes;</code>
|
||||
<br> Ïðèìåíÿåò óêàçàííóþ ôóíêöèþ ê ñîîòâåòñòâóþùèì ýëåìåíòàì êîðòåæåé, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðåçóëüòàòîâ</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1, T2, TRes>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; c: <b>sequence </b> <b>of</b> T2; fun: (T,T1,T2) -> TRes): <b>sequence </b> <b>of</b> TRes;</code>
|
||||
<br> Ïðèìåíÿåò óêàçàííóþ ôóíêöèþ ê ñîîòâåòñòâóþùèì ýëåìåíòàì êîðòåæåé, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðåçóëüòàòîâ</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1, T2, T3, TRes>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; c: <b>sequence </b> <b>of</b> T2; d: <b>sequence </b> <b>of</b> T3; fun: (T,T1,T2,T3) -> TRes): <b>sequence </b> <b>of</b> TRes;</code>
|
||||
<br> Ïðèìåíÿåò óêàçàííóþ ôóíêöèþ ê ñîîòâåòñòâóþùèì ýëåìåíòàì êîðòåæåé, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðåçóëüòàòîâ</td></tr>
|
||||
<tr><td><code><b>function</b> Zip<T, T1, T2, T3, T4, TRes>(a: <b>sequence </b> <b>of</b> T; b: <b>sequence </b> <b>of</b> T1; c: <b>sequence </b> <b>of</b> T2; d: <b>sequence </b> <b>of</b> T3; e: <b>sequence </b> <b>of</b> T4; fun: (T,T1,T2,T3,T4) -> TRes): <b>sequence </b> <b>of</b> TRes;</code>
|
||||
<br> Ïðèìåíÿåò óêàçàííóþ ôóíêöèþ ê ñîîòâåòñòâóþùèì ýëåìåíòàì êîðòåæåé, âîçâðàùàåò ïîñëåäîâàòåëüíîñòü ðåçóëüòàòîâ</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -27,6 +27,7 @@
|
|||
<param name="Keyword" value="PascalABCVersion">
|
||||
<param name="Keyword" value="PointerToString">
|
||||
<param name="Keyword" value="RemoveDir">
|
||||
<param name="Keyword" value="RenameDirectory">
|
||||
<param name="Keyword" value="RenameFile">
|
||||
<param name="Keyword" value="RmDir">
|
||||
<param name="Keyword" value="SetCurrentDir">
|
||||
|
|
@ -41,17 +42,17 @@
|
|||
<br> Выводит в специальном окне диагностическое сообщение и стек вызовов подпрограмм если условие не выполняется</td></tr>
|
||||
<tr><td><code><b>function</b> ChangeFileNameExtension(fileName, newExt: string): string;</code>
|
||||
<br> Изменяет расширение файла с именем fileName на newExt</td></tr>
|
||||
<tr><td><code><b>procedure</b> ChDir(s: string);</code>
|
||||
<tr><td><code><b>procedure</b> ChDir(dirName: string);</code>
|
||||
<br> Меняет текущий каталог</td></tr>
|
||||
<tr><td><code><b>function</b> CreateDir(s: string): boolean;</code>
|
||||
<tr><td><code><b>function</b> CreateDir(dirName: string): boolean;</code>
|
||||
<br> Создает каталог. Возвращает True, если каталог успешно создан</td></tr>
|
||||
<tr><td><code><b>function</b> DeleteFile(fname: string): boolean;</code>
|
||||
<tr><td><code><b>function</b> DeleteFile(fileName: string): boolean;</code>
|
||||
<br> Удаляет файл. Если файл не может быть удален, то возвращает False</td></tr>
|
||||
<tr><td><code><b>function</b> DiskFree(diskname: string): int64;</code>
|
||||
<tr><td><code><b>function</b> DiskFree(diskName: string): int64;</code>
|
||||
<br> Возвращает свободное место в байтах на диске с именем diskname</td></tr>
|
||||
<tr><td><code><b>function</b> DiskFree(disk: integer): int64;</code>
|
||||
<br> Возвращает свободное место в байтах на диске disk. disk=0 - текущий диск, disk=1 - диск A: , disk=2 - диск B: и т.д.</td></tr>
|
||||
<tr><td><code><b>function</b> DiskSize(diskname: string): int64;</code>
|
||||
<tr><td><code><b>function</b> DiskSize(diskName: string): int64;</code>
|
||||
<br> Возвращает размер в байтах на диске с именем diskname</td></tr>
|
||||
<tr><td><code><b>function</b> DiskSize(disk: integer): int64;</code>
|
||||
<br> Возвращает размер в байтах на диске disk. disk=0 - текущий диск, disk=1 - диск A: , disk=2 - диск B: и т.д.</td></tr>
|
||||
|
|
@ -89,7 +90,7 @@
|
|||
<br> Возвращает количество миллисекунд с момента начала работы программы</td></tr>
|
||||
<tr><td><code><b>function</b> MillisecondsDelta: integer;</code>
|
||||
<br> Возвращает количество миллисекунд с момента последнего вызова Milliseconds или MillisecondsDelta или начала программы</td></tr>
|
||||
<tr><td><code><b>procedure</b> MkDir(s: string);</code>
|
||||
<tr><td><code><b>procedure</b> MkDir(dirName: string);</code>
|
||||
<br> Создает каталог</td></tr>
|
||||
<tr><td><code><b>procedure</b> New<T>(<b>var</b> p: ^T);</code>
|
||||
<br> Выделяет динамическую память размера sizeof(T) и возвращает в переменной p указатель на нее. Тип T должен быть размерным</td></tr>
|
||||
|
|
@ -101,27 +102,21 @@
|
|||
<br> Возвращает версию PascalABC.NET</td></tr>
|
||||
<tr><td><code><b>function</b> PointerToString(p: pointer): string;</code>
|
||||
<br> Преобразует указатель к строковому представлению</td></tr>
|
||||
<tr><td><code><b>function</b> RemoveDir(s: string): boolean;</code>
|
||||
<tr><td><code><b>function</b> RemoveDir(dirName: string): boolean;</code>
|
||||
<br> Удаляет каталог. Возвращает True, если каталог успешно удален</td></tr>
|
||||
<tr><td><code><b>function</b> RenameDirectory(dirName, newDirName: string): boolean;</code>
|
||||
<br> Ïåðåèìåíîâûâàåò êàòàëîã dirName, äàâàÿ åìó íîâîå èìÿ newDirName. Âîçâðàùàåò True, åñëè êàòàëîã óñïåøíî ïåðåèìåíîâàí</td></tr>
|
||||
<tr><td><code><b>function</b> RenameFile(fileName, newfileName: string): boolean;</code>
|
||||
<br> Переименовывает файл fileName, давая ему новое имя newfileName. Возвращает True, если файл успешно переименован</td></tr>
|
||||
<tr><td><code><b>procedure</b> RmDir(s: string);</code>
|
||||
<tr><td><code><b>procedure</b> RmDir(dirName: string);</code>
|
||||
<br> Удаляет каталог</td></tr>
|
||||
<tr><td><code><b>function</b> SetCurrentDir(s: string): boolean;</code>
|
||||
<tr><td><code><b>function</b> SetCurrentDir(dirName: string): boolean;</code>
|
||||
<br> Устанавливает текущий каталог. Возвращает True, если каталог успешно удален</td></tr>
|
||||
<tr><td><code><b>procedure</b> Sleep(ms: integer);</code>
|
||||
<br> Делает паузу на ms миллисекунд</td></tr>
|
||||
<tr><td><code><b>function</b> TypeName(o: object): string;</code>
|
||||
<br> Âîçâðàùàåò èìÿ òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>procedure</b> TypeName(o: object; res: StringBuilder);</code>
|
||||
<br> Çàïèñûâàåò â res èìÿ òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>procedure</b> TypeName(o: object; res: TextWriter);</code>
|
||||
<br> Çàïèñûâàåò â res èìÿ òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>function</b> TypeName(obj: object): string;</code>
|
||||
<br> Âîçâðàùàåò ñòðîêó ñ èìåíåì òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>function</b> TypeToTypeName(t: System.Type): string;</code>
|
||||
<br> Äëÿ òèïà System.Type âîçâðàùàåò èìÿ òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>procedure</b> TypeToTypeName(t: System.Type; res: StringBuilder);</code>
|
||||
<br> Äëÿ òèïà System.Type çàïèñûâàåò â res èìÿ òèïà îáúåêòà</td></tr>
|
||||
<tr><td><code><b>procedure</b> TypeToTypeName(t: System.Type; res: TextWriter);</code>
|
||||
<br> Äëÿ òèïà System.Type çàïèñûâàåò â res èìÿ òèïà îáúåêòà</td></tr>
|
||||
<br> Âîçâðàùàåò ñòðîêó ñ èìåíåì äàííîãî òèïà</td></tr>
|
||||
</table>
|
||||
</body></HTML>
|
||||
|
|
@ -1 +1 @@
|
|||
3.9.0.3517
|
||||
3.9.0.3520
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
!define VERSION '3.9.0.3517'
|
||||
!define VERSION '3.9.0.3520'
|
||||
|
|
|
|||
|
|
@ -2278,6 +2278,40 @@ function SeqWhile<T>(first, second: T; next: (T,T) ->T; pred: T->boolean): seque
|
|||
function SeqFill<T>(count: integer; x: T): sequence of T;
|
||||
/// Возвращает бесконечную рекуррентную последовательность элементов, задаваемую начальным элементом first и функцией next
|
||||
function Iterate<T>(first: T; next: T->T): sequence of T;
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function Zip<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1);
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function Zip<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2);
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3);
|
||||
/// Объединяет пять последовательностей в последовательность пятиэлементных кортежей
|
||||
function Zip<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4);
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, TRes>(a: sequence of T; b: sequence of T1; fun: (T,T1) -> TRes): sequence of TRes;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; fun: (T,T1,T2) -> TRes): sequence of TRes;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; fun: (T,T1,T2,T3) -> TRes): sequence of TRes;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; fun: (T,T1,T2,T3,T4) -> TRes): sequence of TRes;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, TRes>(a: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую тройку на значение
|
||||
function Cartesian<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую четвёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пятёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1);
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности троек
|
||||
function Cartesian<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2);
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности четвёрок
|
||||
function Cartesian<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3);
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пятёрок
|
||||
function Cartesian<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4);
|
||||
|
||||
|
||||
/// Возвращает последовательность из n целых, введенных с клавиатуры
|
||||
function ReadSeqInteger(n: integer): sequence of integer;
|
||||
|
|
@ -5372,6 +5406,119 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, TRes>(a: sequence of T; b: sequence of T1; fun: (T,T1) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext do
|
||||
yield fun(aen.Current,ben.Current)
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; fun: (T,T1,T2) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
var cen := c.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext and cen.MoveNext do
|
||||
yield fun(aen.Current,ben.Current,cen.Current)
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; fun: (T,T1,T2,T3) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
var cen := c.GetEnumerator;
|
||||
var den := d.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext and cen.MoveNext and den.MoveNext do
|
||||
yield fun(aen.Current,ben.Current,cen.Current,den.Current)
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; fun: (T,T1,T2,T3,T4) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
var cen := c.GetEnumerator;
|
||||
var den := d.GetEnumerator;
|
||||
var een := e.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext and cen.MoveNext and den.MoveNext and een.MoveNext do
|
||||
yield fun(aen.Current,ben.Current,cen.Current,den.Current,een.Current)
|
||||
end;
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function Zip<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1)
|
||||
:= Zip(a,b,(ax,bx) -> (ax,bx));
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function Zip<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2)
|
||||
:= Zip(a,b,c,(ax,bx,cx) -> (ax,bx,cx));
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3)
|
||||
:= Zip(a,b,c,d,(ax,bx,cx,dx) -> (ax,bx,cx,dx));
|
||||
|
||||
/// Объединяет пять последовательностей в последовательность пятиэлементных кортежей
|
||||
function Zip<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4)
|
||||
:= Zip(a,b,c,d,e,(ax,bx,cx,dx,ex) -> (ax,bx,cx,dx,ex));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, TRes>(a: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
yield func(xa, xb)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую тройку на значение
|
||||
function Cartesian<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
foreach var xc in c do
|
||||
yield func(xa, xb, xc)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую четвёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
foreach var xc in c do
|
||||
foreach var xd in d do
|
||||
yield func(xa, xb, xc, xd)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пятёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
foreach var xc in c do
|
||||
foreach var xd in d do
|
||||
foreach var xe in e do
|
||||
yield func(xa, xb, xc, xd, xe)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1)
|
||||
:= Cartesian(a,b,(xa,xb) -> (xa,xb));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности троек
|
||||
function Cartesian<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2)
|
||||
:= Cartesian(a,b,c,(xa,xb,xc) -> (xa,xb,xc));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности четвёрок
|
||||
function Cartesian<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3)
|
||||
:= Cartesian(a,b,c,d,(xa,xb,xc,xd) -> (xa,xb,xc,xd));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пятёрок
|
||||
function Cartesian<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4)
|
||||
:= Cartesian(a,b,c,d,e,(xa,xb,xc,xd,xe) -> (xa,xb,xc,xd,xe));
|
||||
|
||||
|
||||
function SeqGen<T>(count: integer; first: T; next: T->T): sequence of T;
|
||||
begin
|
||||
if count < 1 then
|
||||
|
|
@ -10700,7 +10847,7 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
/// Возвращает сумму элементов последовательности, спроектированных на числовое значение - пока не работает для Lst(1,2,3)
|
||||
// Возвращает сумму элементов последовательности, спроектированных на числовое значение - пока не работает для Lst(1,2,3)
|
||||
{function Sum<T>(Self: sequence of T; f: T->BigInteger): BigInteger; extensionmethod;
|
||||
begin
|
||||
Result := 0;
|
||||
|
|
@ -10797,6 +10944,7 @@ end;
|
|||
|
||||
// Дополнения февраль 2016: MinBy, MaxBy, TakeLast, Slice, Cartesian, SplitAt,
|
||||
// Partition, ZipTuple, UnZipTuple, Interleave, Numerate, Tabulate, Pairwise, Batch
|
||||
// Дополнения 2024: Zip - синоним ZipTuple
|
||||
|
||||
/// Возвращает первый элемент последовательности с минимальным значением ключа
|
||||
function MinBy<T, TKey>(Self: sequence of T; selector: T->TKey): T; extensionmethod;
|
||||
|
|
@ -10912,28 +11060,6 @@ begin
|
|||
Result := Self.Reverse.Skip(count).Reverse;
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod;
|
||||
begin
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
|
||||
foreach var x in Self do
|
||||
foreach var y in b do
|
||||
yield (x, y)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, T2>(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod;
|
||||
begin
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
|
||||
foreach var x in Self do
|
||||
foreach var y in b do
|
||||
yield func(x, y)
|
||||
end;
|
||||
|
||||
/// Разбивает последовательность на две в позиции ind. Реализуется двухпроходным алгоритмом
|
||||
function SplitAt<T>(Self: sequence of T; ind: integer): (sequence of T, sequence of T); extensionmethod;
|
||||
begin
|
||||
|
|
@ -10956,65 +11082,86 @@ begin
|
|||
Result := (Self.Where(cond), Self.Where((x, i) -> not cond(x, i)));
|
||||
end;
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function ZipTuple<T, T1>(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y));
|
||||
end;
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2>(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z));
|
||||
end;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2) -> TRes): sequence of TRes; extensionmethod
|
||||
:= Zip(Self,b,c,func);
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3) -> TRes): sequence of TRes; extensionmethod
|
||||
:= Zip(Self,b,c,d,func);
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, T4, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4) -> TRes): sequence of TRes; extensionmethod
|
||||
:= Zip(Self,b,c,d,e,func);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2, T3>(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
if c = nil then
|
||||
raise new System.ArgumentNullException('c');
|
||||
Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z));
|
||||
end;
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function Zip<T, T1>(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y));
|
||||
end;
|
||||
function Zip<T, T1>(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod
|
||||
:= Zip(Self,b);
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function Zip<T, T1, T2>(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z));
|
||||
end;
|
||||
function Zip<T, T1, T2>(Self: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2); extensionmethod
|
||||
:= Zip(Self,b,c);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3>(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
if c = nil then
|
||||
raise new System.ArgumentNullException('c');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z));
|
||||
end;
|
||||
function Zip<T, T1, T2, T3>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod
|
||||
:= Zip(Self,b,c,d);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3, T4>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4); extensionmethod
|
||||
:= Zip(Self,b,c,d,e);
|
||||
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, TRes>(Self: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,func);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую тройку на значение
|
||||
function Cartesian<T, T1, T2, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,c,func);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую четвёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,c,d,func);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пятёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, T4, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,c,d,e,func);
|
||||
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod
|
||||
:= Cartesian(Self,b);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности троек
|
||||
function Cartesian<T, T1, T2>(Self: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2); extensionmethod
|
||||
:= Cartesian(Self,b,c);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности четвёрок
|
||||
function Cartesian<T, T1, T2, T3>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod
|
||||
:= Cartesian(Self,b,c,d);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пятёрок
|
||||
function Cartesian<T, T1, T2, T3, T4>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4); extensionmethod
|
||||
:= Cartesian(Self,b,c,d,e);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function ZipTuple<T, T1>(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod
|
||||
:= Self.Zip(a);
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2>(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod
|
||||
:= Self.Zip(a,b);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2, T3>(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod
|
||||
:= Self.Zip(a,b,c);
|
||||
|
||||
|
||||
/// Разъединяет последовательность двухэлементных кортежей на две последовательности. Реализуется двухпроходным алгоритмом
|
||||
function UnZipTuple<T, T1>(Self: sequence of (T, T1)): (sequence of T, sequence of T1); extensionmethod;
|
||||
|
|
|
|||
|
|
@ -2278,6 +2278,40 @@ function SeqWhile<T>(first, second: T; next: (T,T) ->T; pred: T->boolean): seque
|
|||
function SeqFill<T>(count: integer; x: T): sequence of T;
|
||||
/// Возвращает бесконечную рекуррентную последовательность элементов, задаваемую начальным элементом first и функцией next
|
||||
function Iterate<T>(first: T; next: T->T): sequence of T;
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function Zip<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1);
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function Zip<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2);
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3);
|
||||
/// Объединяет пять последовательностей в последовательность пятиэлементных кортежей
|
||||
function Zip<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4);
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, TRes>(a: sequence of T; b: sequence of T1; fun: (T,T1) -> TRes): sequence of TRes;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; fun: (T,T1,T2) -> TRes): sequence of TRes;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; fun: (T,T1,T2,T3) -> TRes): sequence of TRes;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; fun: (T,T1,T2,T3,T4) -> TRes): sequence of TRes;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, TRes>(a: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую тройку на значение
|
||||
function Cartesian<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую четвёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пятёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes;
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1);
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности троек
|
||||
function Cartesian<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2);
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности четвёрок
|
||||
function Cartesian<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3);
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пятёрок
|
||||
function Cartesian<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4);
|
||||
|
||||
|
||||
/// Возвращает последовательность из n целых, введенных с клавиатуры
|
||||
function ReadSeqInteger(n: integer): sequence of integer;
|
||||
|
|
@ -5372,6 +5406,119 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, TRes>(a: sequence of T; b: sequence of T1; fun: (T,T1) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext do
|
||||
yield fun(aen.Current,ben.Current)
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; fun: (T,T1,T2) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
var cen := c.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext and cen.MoveNext do
|
||||
yield fun(aen.Current,ben.Current,cen.Current)
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; fun: (T,T1,T2,T3) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
var cen := c.GetEnumerator;
|
||||
var den := d.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext and cen.MoveNext and den.MoveNext do
|
||||
yield fun(aen.Current,ben.Current,cen.Current,den.Current)
|
||||
end;
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; fun: (T,T1,T2,T3,T4) -> TRes): sequence of TRes;
|
||||
begin
|
||||
var aen := a.GetEnumerator;
|
||||
var ben := b.GetEnumerator;
|
||||
var cen := c.GetEnumerator;
|
||||
var den := d.GetEnumerator;
|
||||
var een := e.GetEnumerator;
|
||||
while aen.MoveNext and ben.MoveNext and cen.MoveNext and den.MoveNext and een.MoveNext do
|
||||
yield fun(aen.Current,ben.Current,cen.Current,den.Current,een.Current)
|
||||
end;
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function Zip<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1)
|
||||
:= Zip(a,b,(ax,bx) -> (ax,bx));
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function Zip<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2)
|
||||
:= Zip(a,b,c,(ax,bx,cx) -> (ax,bx,cx));
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3)
|
||||
:= Zip(a,b,c,d,(ax,bx,cx,dx) -> (ax,bx,cx,dx));
|
||||
|
||||
/// Объединяет пять последовательностей в последовательность пятиэлементных кортежей
|
||||
function Zip<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4)
|
||||
:= Zip(a,b,c,d,e,(ax,bx,cx,dx,ex) -> (ax,bx,cx,dx,ex));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, TRes>(a: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
yield func(xa, xb)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую тройку на значение
|
||||
function Cartesian<T, T1, T2, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
foreach var xc in c do
|
||||
yield func(xa, xb, xc)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую четвёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
foreach var xc in c do
|
||||
foreach var xd in d do
|
||||
yield func(xa, xb, xc, xd)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пятёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, T4, TRes>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes;
|
||||
begin
|
||||
foreach var xa in a do
|
||||
foreach var xb in b do
|
||||
foreach var xc in c do
|
||||
foreach var xd in d do
|
||||
foreach var xe in e do
|
||||
yield func(xa, xb, xc, xd, xe)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(a: sequence of T; b: sequence of T1): sequence of (T, T1)
|
||||
:= Cartesian(a,b,(xa,xb) -> (xa,xb));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности троек
|
||||
function Cartesian<T, T1, T2>(a: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2)
|
||||
:= Cartesian(a,b,c,(xa,xb,xc) -> (xa,xb,xc));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности четвёрок
|
||||
function Cartesian<T, T1, T2, T3>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3)
|
||||
:= Cartesian(a,b,c,d,(xa,xb,xc,xd) -> (xa,xb,xc,xd));
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пятёрок
|
||||
function Cartesian<T, T1, T2, T3, T4>(a: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4)
|
||||
:= Cartesian(a,b,c,d,e,(xa,xb,xc,xd,xe) -> (xa,xb,xc,xd,xe));
|
||||
|
||||
|
||||
function SeqGen<T>(count: integer; first: T; next: T->T): sequence of T;
|
||||
begin
|
||||
if count < 1 then
|
||||
|
|
@ -10700,7 +10847,7 @@ begin
|
|||
end;
|
||||
end;
|
||||
|
||||
/// Возвращает сумму элементов последовательности, спроектированных на числовое значение - пока не работает для Lst(1,2,3)
|
||||
// Возвращает сумму элементов последовательности, спроектированных на числовое значение - пока не работает для Lst(1,2,3)
|
||||
{function Sum<T>(Self: sequence of T; f: T->BigInteger): BigInteger; extensionmethod;
|
||||
begin
|
||||
Result := 0;
|
||||
|
|
@ -10797,6 +10944,7 @@ end;
|
|||
|
||||
// Дополнения февраль 2016: MinBy, MaxBy, TakeLast, Slice, Cartesian, SplitAt,
|
||||
// Partition, ZipTuple, UnZipTuple, Interleave, Numerate, Tabulate, Pairwise, Batch
|
||||
// Дополнения 2024: Zip - синоним ZipTuple
|
||||
|
||||
/// Возвращает первый элемент последовательности с минимальным значением ключа
|
||||
function MinBy<T, TKey>(Self: sequence of T; selector: T->TKey): T; extensionmethod;
|
||||
|
|
@ -10912,28 +11060,6 @@ begin
|
|||
Result := Self.Reverse.Skip(count).Reverse;
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod;
|
||||
begin
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
|
||||
foreach var x in Self do
|
||||
foreach var y in b do
|
||||
yield (x, y)
|
||||
end;
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, T2>(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod;
|
||||
begin
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
|
||||
foreach var x in Self do
|
||||
foreach var y in b do
|
||||
yield func(x, y)
|
||||
end;
|
||||
|
||||
/// Разбивает последовательность на две в позиции ind. Реализуется двухпроходным алгоритмом
|
||||
function SplitAt<T>(Self: sequence of T; ind: integer): (sequence of T, sequence of T); extensionmethod;
|
||||
begin
|
||||
|
|
@ -10956,65 +11082,86 @@ begin
|
|||
Result := (Self.Where(cond), Self.Where((x, i) -> not cond(x, i)));
|
||||
end;
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function ZipTuple<T, T1>(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y));
|
||||
end;
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2>(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z));
|
||||
end;
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2) -> TRes): sequence of TRes; extensionmethod
|
||||
:= Zip(Self,b,c,func);
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3) -> TRes): sequence of TRes; extensionmethod
|
||||
:= Zip(Self,b,c,d,func);
|
||||
|
||||
/// Применяет указанную функцию к соответствующим элементам кортежей, возвращает последовательность результатов
|
||||
function Zip<T, T1, T2, T3, T4, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4) -> TRes): sequence of TRes; extensionmethod
|
||||
:= Zip(Self,b,c,d,e,func);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2, T3>(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
if c = nil then
|
||||
raise new System.ArgumentNullException('c');
|
||||
Result := Self.Zip(a, (x, y)-> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z));
|
||||
end;
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function Zip<T, T1>(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y));
|
||||
end;
|
||||
function Zip<T, T1>(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod
|
||||
:= Zip(Self,b);
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function Zip<T, T1, T2>(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z));
|
||||
end;
|
||||
function Zip<T, T1, T2>(Self: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2); extensionmethod
|
||||
:= Zip(Self,b,c);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3>(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod;
|
||||
begin
|
||||
if a = nil then
|
||||
raise new System.ArgumentNullException('a');
|
||||
if b = nil then
|
||||
raise new System.ArgumentNullException('b');
|
||||
if c = nil then
|
||||
raise new System.ArgumentNullException('c');
|
||||
Result := Self.Zip(a, (x, y) -> (x, y)).Zip(b, (p, z) -> (p[0], p[1], z)).Zip(c, (p, z) -> (p[0], p[1], p[2], z));
|
||||
end;
|
||||
function Zip<T, T1, T2, T3>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod
|
||||
:= Zip(Self,b,c,d);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function Zip<T, T1, T2, T3, T4>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4); extensionmethod
|
||||
:= Zip(Self,b,c,d,e);
|
||||
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение
|
||||
function Cartesian<T, T1, TRes>(Self: sequence of T; b: sequence of T1; func: (T,T1)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,func);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую тройку на значение
|
||||
function Cartesian<T, T1, T2, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; func: (T,T1,T2)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,c,func);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую четвёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; func: (T,T1,T2,T3)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,c,d,func);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей, проектируя каждую пятёрку на значение
|
||||
function Cartesian<T, T1, T2, T3, T4, TRes>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4; func: (T,T1,T2,T3,T4)->TRes): sequence of TRes; extensionmethod
|
||||
:= Cartesian(Self,b,c,d,e,func);
|
||||
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пар
|
||||
function Cartesian<T, T1>(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod
|
||||
:= Cartesian(Self,b);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности троек
|
||||
function Cartesian<T, T1, T2>(Self: sequence of T; b: sequence of T1; c: sequence of T2): sequence of (T, T1, T2); extensionmethod
|
||||
:= Cartesian(Self,b,c);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности четвёрок
|
||||
function Cartesian<T, T1, T2, T3>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod
|
||||
:= Cartesian(Self,b,c,d);
|
||||
|
||||
/// Возвращает декартово произведение последовательностей в виде последовательности пятёрок
|
||||
function Cartesian<T, T1, T2, T3, T4>(Self: sequence of T; b: sequence of T1; c: sequence of T2; d: sequence of T3; e: sequence of T4): sequence of (T, T1, T2, T3, T4); extensionmethod
|
||||
:= Cartesian(Self,b,c,d,e);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/// Объединяет две последовательности в последовательность двухэлементных кортежей
|
||||
function ZipTuple<T, T1>(Self: sequence of T; a: sequence of T1): sequence of (T, T1); extensionmethod
|
||||
:= Self.Zip(a);
|
||||
|
||||
/// Объединяет три последовательности в последовательность трехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2>(Self: sequence of T; a: sequence of T1; b: sequence of T2): sequence of (T, T1, T2); extensionmethod
|
||||
:= Self.Zip(a,b);
|
||||
|
||||
/// Объединяет четыре последовательности в последовательность четырехэлементных кортежей
|
||||
function ZipTuple<T, T1, T2, T3>(Self: sequence of T; a: sequence of T1; b: sequence of T2; c: sequence of T3): sequence of (T, T1, T2, T3); extensionmethod
|
||||
:= Self.Zip(a,b,c);
|
||||
|
||||
|
||||
/// Разъединяет последовательность двухэлементных кортежей на две последовательности. Реализуется двухпроходным алгоритмом
|
||||
function UnZipTuple<T, T1>(Self: sequence of (T, T1)): (sequence of T, sequence of T1); extensionmethod;
|
||||
|
|
|
|||
Binary file not shown.
Loading…
Reference in a new issue