pascalabcnet/CodeExamples/Patterns/patterns-collection-matching1.pas

43 lines
801 B
ObjectPascal
Raw Permalink Normal View History

2019-04-05 13:54:01 +03:00
type
CardInfo = auto class
2019-05-23 10:37:16 +03:00
public
2019-04-05 13:54:01 +03:00
cardNumber: string;
cv: integer;
end;
Person = class
2019-05-23 10:37:16 +03:00
public
2019-04-05 13:54:01 +03:00
name: string;
age: integer;
card: CardInfo;
constructor(name: string; age: integer; card: CardInfo);
begin
self.name := name;
self.age := age;
self.card := card;
end;
procedure Deconstruct(var name: string; var age: integer; var card: CardInfo);
begin
name := self.name;
age := self.age;
card := self.card;
end;
end;
begin
2019-05-23 10:37:16 +03:00
var a := Arr(1, 9, 8, 7, 2, 3, 4, 5);
2019-04-05 13:54:01 +03:00
// Расширенный is
2019-05-23 10:37:16 +03:00
if a is [1, .., var x, _, 5] then
Println(x);
2019-04-05 13:54:01 +03:00
// match .. with
match a with
2019-05-23 10:37:16 +03:00
[1, 9, 8, _, 2]: print(1);
[.., var y, var x]: print(x + y);
2019-04-05 13:54:01 +03:00
[_, .., _]: print(3);
end;
end.