From 314ee3b8bec12abc9db9b34d67d15d5ad8b7c52a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=9F=D0=BE=D0=B3=D0=BE=D1=80=D0=B5=D0=BB=D0=BE=D0=B2?= Date: Fri, 5 Apr 2019 14:08:09 +0300 Subject: [PATCH] Simple tuple and const matching code examples --- CodeExamples/Patterns/patterns-collection-matching1.pas | 6 +++--- CodeExamples/Patterns/patterns-simple-const.pas | 8 ++++++++ CodeExamples/Patterns/patterns-simple-tuple.pas | 7 +++++++ CodeExamples/Patterns/patterns-type-matching1.pas | 2 +- 4 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 CodeExamples/Patterns/patterns-simple-const.pas create mode 100644 CodeExamples/Patterns/patterns-simple-tuple.pas diff --git a/CodeExamples/Patterns/patterns-collection-matching1.pas b/CodeExamples/Patterns/patterns-collection-matching1.pas index 4d297dea6..822e3bf6b 100644 --- a/CodeExamples/Patterns/patterns-collection-matching1.pas +++ b/CodeExamples/Patterns/patterns-collection-matching1.pas @@ -31,12 +31,12 @@ begin var a := Arr(1,9,8,7,2,3,4,5); // Расширенный is - if a is [1,..,x,_,5] then - Println(x); + if a is [1,..,x,_,5] then // a is [1,..,1,1,1,1,1,1,1,1,1,1] - ран тайм эррор - + Println(x); //в расширенном is короткое вычисление логических выражений не работает (#1508) // match .. with match a with - [1,9,8,7,2]: print(1); + [1,9,8,'str',2]: print(1); //Нет проверки соответствия типов в для коллекций - добавить. [..,4,x]: print(x); [_, .., _]: print(3); end; diff --git a/CodeExamples/Patterns/patterns-simple-const.pas b/CodeExamples/Patterns/patterns-simple-const.pas new file mode 100644 index 000000000..bbe322374 --- /dev/null +++ b/CodeExamples/Patterns/patterns-simple-const.pas @@ -0,0 +1,8 @@ +begin + var a := 3.14; + match a with + 1.0, 2.0, 3.0: Println(1); // Надо исправить: double не матчит с integer - несоответствие типов. + 3.13, 3.14, 3.15, 3.16: print(2); + 123.0: print(3); + end; +end. \ No newline at end of file diff --git a/CodeExamples/Patterns/patterns-simple-tuple.pas b/CodeExamples/Patterns/patterns-simple-tuple.pas new file mode 100644 index 000000000..5c622c928 --- /dev/null +++ b/CodeExamples/Patterns/patterns-simple-tuple.pas @@ -0,0 +1,7 @@ +begin + match (1, 2, 'string') with + (1, _, 1): Println(1); // Нет проверки типов каждого элемента tuple - надо ли? + (1, _, 'strin'): print(2); + (_,_,'string'): print(3); + end; +end. \ No newline at end of file diff --git a/CodeExamples/Patterns/patterns-type-matching1.pas b/CodeExamples/Patterns/patterns-type-matching1.pas index 195905307..a9edcec11 100644 --- a/CodeExamples/Patterns/patterns-type-matching1.pas +++ b/CodeExamples/Patterns/patterns-type-matching1.pas @@ -33,7 +33,7 @@ begin // match .. with match a with - Person('Вася', 12, CardInfo('12345678', var cv)): Println(cv); + Person(1, 12, CardInfo('12345678', var cv)): Println(cv); // Нет проверки соответсвия типов при деконструировании - добавить. Person('Вася', _, CardInfo(cardNum, 324)): Println(cardNum); Person(_, _, CardInfo(_, x)): Println(x); end;