Size: a a a

2020 July 16

A

Aleksandr Khristenko in PHP
Путь унификации это сделать их expression
источник

A

Aleksandr Khristenko in PHP
Но для этого нужно expression блоки
источник

KN

Kirill Nesmeyanov in PHP
так я предложил expr кейворд)
источник

AC

A C in PHP
Kirill Nesmeyanov
в результате:
1) if + ternary
2) switch + match
3) function + fn
4) while + ???
5) for + ???
6) do while + ???
7) foreach + ???
тогда всё и вправду дойдёт до шутки, что никто не читает доки)
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
так я предложил expr кейворд)
Т.е. ты предложил создание нового. Будет простой блок и expr блок.
источник

KN

Kirill Nesmeyanov in PHP
но он сразу покрывает все кейсы
источник

KN

Kirill Nesmeyanov in PHP
но это очевидно так, сходу набросал идею
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
но он сразу покрывает все кейсы
fn($x) => expr {
  //...
  //...
 return 3;
}
так тогда бы анонимки бы выглядели?
источник

KN

Kirill Nesmeyanov in PHP
Aleksandr Khristenko
fn($x) => expr {
  //...
  //...
 return 3;
}
так тогда бы анонимки бы выглядели?
ну мультистрочные да, вполне так
источник

KN

Kirill Nesmeyanov in PHP
если опять же учитывать, что я только что из головы этот expr {} выдумал, даже не думая особо о синтаксисе
источник

KN

Kirill Nesmeyanov in PHP
потому что да, логичнее получается писать
if ($some) expr { ... }
вместо
if expr ($some) { ... }
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
потому что да, логичнее получается писать
if ($some) expr { ... }
вместо
if expr ($some) { ... }
Но опять же, чтобы писать так нужно чтобы if был expression, а он statement.
источник

KN

Kirill Nesmeyanov in PHP
ну переделать в выржение, делов-то
источник

KN

Kirill Nesmeyanov in PHP
будет по-дефолту null возвращать
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
если опять же учитывать, что я только что из головы этот expr {} выдумал, даже не думая особо о синтаксисе
Кстати, тогда можно еще и блочную видимость для таких блоков сделать.
источник

KN

Kirill Nesmeyanov in PHP
$some = expr {
   $a = 23;

   return $a + 42;
}

$a; // err undefined variable $a


угу
источник

KN

Kirill Nesmeyanov in PHP
как отдельный скоуп будет
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
$some = expr {
   $a = 23;

   return $a + 42;
}

$a; // err undefined variable $a


угу
Хотя в таком случае семантика return внутри блока меняется в зависимости от того, что написано в начале блока.
Это вообще дофига смущать будет.
источник

KN

Kirill Nesmeyanov in PHP
ну типа в этом и смысл
источник

A

Aleksandr Khristenko in PHP
Проще пойти по пути, которым пошли другие языки, что последний expr в блоке является значением блока.
источник