Обычно я просматриваю этот факт и просто принимаю его как "это то, как колесо вращается", но сегодня я задаюсь вопросом, откуда это происходит: Почему функция имеет только одно значение возврата (ссылки)?
Почему не может, было бы сложно или неразумно, чтобы функция возвращала несколько значений? Это из-за объектов и как вы должны ожидать, что пакет данных всегда должен быть возвращен в виде ссылки на объект?
Если вы видите объявленную функцию как контракт, в которой указывается, как можно вызвать функцию, какие параметры она должна принимать и какой тип возвращаемого значения она имеет, то я не вижу логики, которая имеет только одно возвращаемое значение, поскольку вы можете применить ту же логику по-другому (таким образом, создавая контракт для более чем одного возвращаемого значения).
Единственная причина, основанная на логике, которую я вижу, заключается в том, что если функция возвращает более 1 вещи, она также должна манипулировать более чем 1 вещью по более чем одной причине, которая противоречит философии, что функция должна выполнять только одно. Если эта вещь управляет объектом и возвращает другой объект, это имеет смысл, и вы можете вернуть ссылочное значение с помощью управляемого объекта.
Итак, почему именно это ограничение существует?