Задать вопрос

Почему нельзя присваивать значение по ссылке, которую возвращает функция?

Пытаюсь сделать на PHP что-то вроде std::vector из С++

class Vector
{
  private $a = [];

  function __construct( $arr = [] ) {
    $this->a = (array)$arr;
  }
  
  function &at( $i ) {
    return $this->a[$i];
  } 
}


К удивлению обнаружил, что так делать нельзя:
$vec = new Vector( ['a',  'b'] );
$vec->at(1) = 'z'; // Fatal error: Can't use method return value in write context
А так почему-то можно:
$vec = new Vector( ['a',  'b'] );
$ref = &$vec->at(1);
$ref = 'z'; // ok!


Можно как-то реализовать присвоение без промежуточных переменных?
  • Вопрос задан
  • 183 просмотра
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
toxa82
@toxa82
Нельзя. Это ж переменные передаются по ссылке, поэтому без переменной никак.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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