Code examples

This commit is contained in:
Александр Погорелов 2019-04-05 13:54:01 +03:00
parent 7d8aac474b
commit aa4a847bad
4 changed files with 172 additions and 0 deletions

View file

@ -0,0 +1,43 @@
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 a := Arr(1,9,8,7,2,3,4,5);
// Расширенный is
if a is [1,..,x,_,5] then
Println(x);
// match .. with
match a with
[1,9,8,7,2]: print(1);
[..,4,x]: print(x);
[_, .., _]: print(3);
end;
end.

View file

@ -0,0 +1,46 @@
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);
[p, .., Person('Маша', _, _)]: print((p as Person).name);
[..]: print(1);
end;
end.

View file

@ -0,0 +1,43 @@
type
CardInfo = auto class
public
cardNumber: string;
cv: integer;
end;
Person = class
name: string;
age: integer;
card: List<CardInfo> := new List<CardInfo>();
constructor(name: string; age: integer; card: List<CardInfo>);
begin
self.name := name;
self.age := age;
self.card := card;
end;
procedure Deconstruct(var name: string; var age: integer; var card: List<CardInfo>);
begin
name := self.name;
age := self.age;
card := self.card;
end;
end;
begin
var cards := new List<CardInfo>();
cards.Add(new CardInfo('12345671', 321));
cards.Add(new CardInfo('12345672', 322));
cards.Add(new CardInfo('12345673', 323));
cards.Add(new CardInfo('12345674', 324));
var p := new Person('Вася', 21, cards);
// match .. with
match p with
Person('Петя', _, _): print('Петя');
Person('Вася', _, [_, _, x]): print(x);
Person(name, _, [CardInfo(_, 321), .., CardInfo(_, 324)]): print(name);
end;
end.

View file

@ -0,0 +1,40 @@
type
CardInfo = auto class
public
cardNumber: string;
cv: integer;
end;
Person = class
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 a := new Person('Вася', 11, new CardInfo('12345678', 324));
// Расширенный is
if a is Person('Вася', var age, CardInfo(_, var cv)) then Println(age, cv);
// match .. with
match a with
Person('Вася', 12, CardInfo('12345678', var cv)): Println(cv);
Person('Вася', _, CardInfo(cardNum, 324)): Println(cardNum);
Person(_, _, CardInfo(_, x)): Println(x);
end;
end.