Глядя на ваш исходный скрипт.
function tap($value, $callback) {
$callback($value);
return $value;
}
var_dump(tap($collection, function($collection) {
$collection->set([1,9,2]);
}));
В этом коде функция $callback
выполняется в первую очередь. Затем функция снова вызывается с новым $collection
. После этого он возвращает новый $collection
. Таким образом, выход представляет собой новый $collection
.
Вот модифицирующий код. Я тестировал его и работает как ожидалось.
function tap($value, $callback) {
var_dump($value);
$callback($value);
}
tap($collection, function($collection) {
$collection->set([1,9,2]);
});
Я положил var_dump
внутри функции. В этом коде сначала выведите исходный $collection
, прежде чем вызывать обратный вызов. Я пытаюсь поместить var_dump($collection->get());
после функции tap
. Изменяется значение $collection
.
Я предполагаю, что, когда вы загружаете файл из Интернета, вы уверены, что загружаете видео при таких обстоятельствах? И что вам действительно нужно, так это просто изменить формат, то есть PathExtension
, например .mp4, .png, jpeg и т. Д.
Если (если и только если) это так, то вы можете добавить расширение файла к компоненту пути.
let destinationURL = docDirectoryURL.appendingPathComponent("\(destinationFilename!)").appendingPathExtension("mp4")
Теперь, когда вы проверяете свои сохраненные файлы, он будет содержать «.mp4»
Опять же, я предполагаю, что вы на 110% уверены, что скачиваете «.mp4». "из паутины.