Я работаю с php, и я столкнулся с затруднительным положением. Мне нужен мой двусвязный список, чтобы была доступна перекрестная функция. Чтобы решить эту проблему, я явно передавал адрес переменной в параметрах. Является ли этот подход правильным решением? Это выглядит примерно так:
function foo(&$list){
$list->push('a');
$list->push('b');
$list->push('c');
$list->push('d');
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current()."\n";
}
}
Кроме того, можно отметить, что я могу сохранить объект в связанном списке, просто выполнив следующие действия?
function foo(&$list){
//assuming Pie is a class with a method get_pie_flavor()
$myBar = new Pie('cherry');
$list->push($myBar);
$list->setIteratorMode(SplDoublyLinkedList::IT_MODE_FIFO);
for ($list->rewind(); $list->valid(); $list->next()) {
echo $list->current()->get_pie_flavor();
//will this print 'cherry' assuming get_pie_flavor is written correctly?
}
}
На примечании стороны: Да, вы можете сделать именно это. Также передача по ссылке работает точно так, как показано выше, при условии, что список инициализирован правильно.
Других решений пока нет …