pascalabcnet/CodeExamples/Patterns/patterns-collection-matching2.pas
Mikhalkovich Stanislav bd52663612 Invoke -> Redraw в GraphWPF и WPFObjects
With... ->Set... в  WPFObjects
Конструкторы с шириной и цветом границы в  WPFObjects
Несколько примеров в WPFObjects
2019-08-05 00:23:28 +03:00

46 lines
1.1 KiB
ObjectPascal

type
CardInfo = auto class
public
cardNumber: string;
cv: integer;
end;
Person = class
public
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
var p1 := new Person('Вася', 11, new CardInfo('12345671', 321));
var p2 := new Person('Петя', 12, new CardInfo('12345672', 322));
var p3 := new Person('Маша', 13, new CardInfo('12345673', 323));
var personArr := Arr(p1, p2, p3);
// Расширенный is
if personArr is [Person(name1, 11, CardInfo(_, cv)), _, Person(name2, 13, _)] then
println(name1, cv, name2);
// match .. with
match personArr with
[_, _, Person('Вася', age, _)]: Print(age);
[var p, .., Person('Маша', _, _)]: Print((p as Person).name);
[..]: Print(1);
end;
end.