pascalabcnet/TestSuite/extensionmethods8.pas

81 lines
1.8 KiB
ObjectPascal
Raw Permalink Normal View History

2019-07-05 13:26:17 +03:00
function myfirst<T>(self: array of T): T; extensionmethod;
2015-10-11 15:58:50 +03:00
begin
Result := self[0];
end;
function abs(self: integer): integer; extensionmethod;
begin
Result := PABCSystem.Abs(self);
end;
function test(self: List<integer>): integer; extensionmethod;
begin
Result := self[1];
end;
2019-07-05 13:26:17 +03:00
2015-10-11 15:58:50 +03:00
function test(self: List<real>): real; extensionmethod;
begin
Result := self[0];
end;
2019-07-05 13:26:17 +03:00
2015-10-11 15:58:50 +03:00
procedure myproc(self: integer); extensionmethod;
begin
assert(self = 2);
end;
2019-07-05 13:26:17 +03:00
2015-10-11 15:58:50 +03:00
function glue(self: array of char): string; extensionmethod;
begin
var sb: StringBuilder := new StringBuilder();
foreach var c in self do
sb.Append(c);
Result := sb.ToString();
end;
2019-07-05 13:26:17 +03:00
procedure MyAdd<T>(self: List<T>; params arr: array of T); extensionmethod;
begin
self.AddRange(arr);
end;
2019-07-05 13:26:17 +03:00
procedure Add(self: List<integer>; params arr: array of integer); extensionmethod;
begin
self.AddRange(arr);
end;
2019-07-05 13:26:17 +03:00
function BinarySearch<T>(self: array of T; item: T): integer; extensionmethod;
begin
2019-07-05 13:26:17 +03:00
Result := System.Array.BinarySearch(self, item);
end;
2019-07-05 13:26:17 +03:00
procedure Test1<T>(self: array[,] of T); extensionmethod;
begin
2019-07-05 13:26:17 +03:00
assert(self[0, 0].ToString() = '3');
var e := self[0, 0];
assert(e.ToString = '3');
end;
2015-10-11 15:58:50 +03:00
begin
2019-07-05 13:26:17 +03:00
var arr := Arr(1, 2, 3);
assert(arr.myfirst = 1);
2015-10-11 15:58:50 +03:00
var i := -2;
assert(i.abs = 2);
var lst: List<integer> := new System.Collections.Generic.List<integer>();
2019-07-05 13:26:17 +03:00
lst.Add(20); lst.Add(15);
2015-10-11 15:58:50 +03:00
assert(lst.test() = 15);
var lst2: List<real> := new System.Collections.Generic.List<real>();
2019-07-05 13:26:17 +03:00
lst2.Add(20); lst2.Add(15);
2015-10-11 15:58:50 +03:00
assert(lst2.test() = 20);
2019-07-05 13:26:17 +03:00
var j := 2;
2015-10-11 15:58:50 +03:00
j.myproc;
2019-07-05 13:26:17 +03:00
assert(PABCSystem.Arr('a', 'b', 'c').glue = 'abc');
var lst3 := new List<integer>;
2019-07-05 13:26:17 +03:00
lst3.MyAdd(2, 3, 4, 5);
assert(lst3[3] = 5);
var lst4 := new List<integer>;
2019-07-05 13:26:17 +03:00
lst4.Add(2, 3, 4, 5);
assert(lst4[3] = 5);
assert(arr.BinarySearch(3) = 2);
var arr3 := new integer[2, 2];
arr3[0, 0] := 3;
arr3.Test1;
2019-07-05 13:26:17 +03:00
2015-10-11 15:58:50 +03:00
end.