Единственное объяснение, которое у меня есть, это то, что автор перепутал «по значению» и «по ссылке».
Однако, если производительность играет какую-либо роль, FoodList
также должен быть передан в качестве ссылки, поскольку для копирования ссылки обычно менее дорого, чем для копирования всей строки. Некоторые языки, такие как C++, позволяют помечать ссылку как постоянную. Это предотвратит изменение подпрограммы.
Кроме того, в большинстве языков программирования подпрограммы называются функциями и имеют возвращаемые значения. Хорошей практикой является использование аргументов только для входов и возвращаемого значения для выхода подпрограммы. (Для того, чтобы выяснить, почему это хорошая практика, поиск терминов «побочные эффекты» и «ссылочную прозрачность».)
В C++ функция может быть объявлена следующим образом:
std::list<std::string> Make_List(const std::string& foodList);