Задать вопрос
@Vladimir-Hetman

Match не возвращает значения?

Попытался переписать код ниже на match.
Не могу понять в чем причина?
Ведь match возвращает значения через "=>",
но консоль пишет "none returned " че за бред?

Оригинальный код:
spoiler
function select($n): callable{
  
  switch($n){
  case 1:  return function($a, $b) {return $a + $b;}; 
  case 2:  return function($a, $b) {return $a - $b;};
  case 3:  return function($a, $b) {return $a * $b;};
  }
  
}

$selection = select(1);
echo $selection(4,5);


Моя попытка переписать оригинальный код на match:
spoiler
function select($a): callable{
  
  match($a){
  1 => function($b, $c) { return $b + $c; },
  2 => function($b, $c) { return $b - $c; },
  3 => function($b, $c) { return $b * $c; },
  };

}

$opa = select(1);
echo $opa(2,2);

  • Вопрос задан
  • 185 просмотров
Подписаться 1 Простой 12 комментариев
Решения вопроса 2
Stalker_RED
@Stalker_RED
Дык у вас там вообще нет return, потому и "бред".
Ответ написан
Рабочий вариант:
function select($a): callable{
  
  return match($a){
  1 => function($b, $c) { return $b + $c; },
  2 => function($b, $c) { return $b - $c; },
  3 => function($b, $c) { return $b * $c; },
  };

}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы