То, что вы знаете о получении индекса в array_reduce
, не существует. Проверьте документацию.
Вопрос в том, , почему ?
Посмотрите, сокращение используется для того, чтобы перейти к одному единственному значению, его агрегации. У вас есть начальное значение, а следующее значение показывает вашу стратегию снижения. Нет смысла знать текущий индекс предмета.
В некоторых других языках они могут предоставлять текущий индекс, но не для этого array_reduce
в PHP. Это язык и функция разработаны, есть некоторые ограничения в реализации.
Но это не значит, что у тебя не может быть этого. Вы можете получить его, но не через обратный вызов!
$i = 0;
$data = [1, 2, 3, 4];
// (1)
$result = array_reduce($data, function ($c, $i) { return $c + $i; }, 0);
// (2)
array_reduce($data, function ($c, $i) { echo "$i\n"; $i++; return $c + $i; }, 0);
Дело в том, что функция предназначена для этого. Или вы пытаетесь использовать неправильную функцию. Некоторые другие функции могут быть тем, что вы ищете.
Или вы можете написать функцию, которая тоже это делает:)
Нет, GC.Collect () вызов является асинхронным, необходимо было бы также назвать это:
System.GC.WaitForPendingFinalizers();
Я смотрел бы на, Располагают, Завершение и управление ресурсами, это - лучшая ссылка на предмете, о котором я знаю. Используя их шаблон:
~ComplexCleanupBase()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected override void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing)
{
// dispose-only, i.e. non-finalizable logic
}
// new shared cleanup logic
disposed = true;
}
base.Dispose(disposing);
}
Вы волнуете с очень простым Финализатором/Располагать (), методы и тестируемое Располагают (bool). Никакая потребность вызвать Завершение или что-либо с помощью класса GC.
Вы могли дразнить IDisposable
соедините интерфейсом и ожидайте вызов к Dispose
? Это, по крайней мере, позволило бы Вам видеть, когда объект на самом деле расположен.
Я думаю, что склонился бы к созданию, Завершают (), называют другой метод и тест, что другой метод делает то, что Вы хотите. Вы не получили бы 100%-е покрытие кода, но по крайней мере Вы будете знать, что метод высвобождает средства объекта правильно.