Merge master[4]
This commit is contained in:
parent
982a0baf8d
commit
196ef12199
|
|
@ -1,46 +0,0 @@
|
||||||
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
|
|
||||||
assert(name1.Equals('Вася') and (cv = 321) and name2.Equals('Маша'));
|
|
||||||
|
|
||||||
// match .. with
|
|
||||||
match personArr with
|
|
||||||
[ _, _, Person('Вася', var age, _)]: assert(false);
|
|
||||||
[ var p, .. , Person('Маша', _, _)]: assert((p as Person).name.Equals('Вася'));
|
|
||||||
[ .. ]: assert(false);
|
|
||||||
end;
|
|
||||||
end.
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
begin
|
|
||||||
match ( 1, 2, 'string' ) with
|
|
||||||
( 1, _, 'str' ): assert(false);
|
|
||||||
( 1, _, 'strin'): assert(false);
|
|
||||||
( _, _, 'string'): ;
|
|
||||||
end;
|
|
||||||
end.
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
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
|
|
||||||
assert(name1.Equals('Вася') and (cv = 321) and name2.Equals('Маша'));
|
|
||||||
|
|
||||||
// match .. with
|
|
||||||
match personArr with
|
|
||||||
[_, _, Person('Вася', var age, _)]: assert(false);
|
|
||||||
[var p, .., Person('Маша', _, _)]: assert((p as Person).name.Equals('Вася'));
|
|
||||||
[..]: assert(false);
|
|
||||||
end;
|
|
||||||
end.
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
begin
|
|
||||||
match (1, 2, 'string') with
|
|
||||||
(1, _, 'str'): assert(false);
|
|
||||||
(1, _, 'strin'): assert(false);
|
|
||||||
(_, _, 'string'): ;
|
|
||||||
end;
|
|
||||||
end.
|
|
||||||
Loading…
Reference in a new issue