Size: a a a

2020 July 16

KN

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

A

Aleksandr Khristenko in PHP
Почему?
источник

KN

Kirill Nesmeyanov in PHP
ну потому что:

{
   $a = 23;
}


валидная конструкция языка
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
ну потому что:

{
   $a = 23;
}


валидная конструкция языка
Она и останется валидной.
источник

A

Aleksandr Khristenko in PHP
$some = {
 $a = 42;
 $a + 43
};
источник

KN

Kirill Nesmeyanov in PHP
а, ну да, просто будет возвращать результат последнего выражения
источник

A

Aleksandr Khristenko in PHP
Я про такое
источник

KN

Kirill Nesmeyanov in PHP
Aleksandr Khristenko
Я про такое
скорее так тогда уж:
$some = {
   $a = 23;
   $a + 42;
}
источник

KN

Kirill Nesmeyanov in PHP
function example() {
   {
       $a = 23;
       return $b = 23;
   }
}
источник

KN

Kirill Nesmeyanov in PHP
сейчас example() возвращает 23
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
скорее так тогда уж:
$some = {
   $a = 23;
   $a + 42;
}
Нет, именно без последней точкой с запятой.
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
сейчас example() возвращает 23
Так и дальше будет возвращать.
источник

KN

Kirill Nesmeyanov in PHP
Aleksandr Khristenko
Нет, именно без последней точкой с запятой.
тогда уже наличие и отсутствие оной будут означать разное
источник

KN

Kirill Nesmeyanov in PHP
Aleksandr Khristenko
Так и дальше будет возвращать.
не будет
источник

KN

Kirill Nesmeyanov in PHP
потому что в твоём варианте return относится к блоку, а не к функции
источник

KN

Kirill Nesmeyanov in PHP
и функция будет возвращать void, т.к. в ней нет return
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
тогда уже наличие и отсутствие оной будут означать разное
Мм. Нет. Точка с запятой служит для разделения statement/expressions. Результат блока - последнее expression в блоке.
В случае если последняя точка с запятой есть - то это можно интерпретировать как $a = 23; $a + 42; null
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
потому что в твоём варианте return относится к блоку, а не к функции
Семантика ретурна внутри блока не меняется никак. Значение блока - последний expression в блоке.
источник

KN

Kirill Nesmeyanov in PHP
это нарушение BC, я же говорю
источник

A

Aleksandr Khristenko in PHP
Kirill Nesmeyanov
это нарушение BC, я же говорю
Да почему нарушение BC? Ничего не ломается.
источник