Действительно ли возможно сделать Для … Каждый Цикл Назад?

Если вы хотите отключить только автоматические тесты, вы можете использовать черту WithoutMiddleware в своих тестах.

use Illuminate\Foundation\Testing\WithoutMiddleware;

class YourTest extends TestCase {
    use WithoutMiddleware;

    ...

В противном случае просто удалите строку 'throttle:60,1', из файла ядра (app/Http/Kernel.php), и ваша проблема будет решена.

34
задан Anders 4 June 2009 в 17:56
поделиться

5 ответов

Я думаю, что документация, указанная в Ответ Майка ниже , крайне вводит в заблуждение. Порядок для каждого определяется коллекцией, которую он вызывает (то есть его реализацией IEnumerable / IEnumerable ), но это не то же самое, что сказать, что его не следует использовать, когда важен порядок. Многие коллекции (например, массивы, List и т. Д.) Всегда идут в «естественном» порядке.

Часть документации ссылается на это:

Порядок обхода . Когда вы выполняете For Each ... Next цикл, обход коллекция находится под контролем объект перечислителя, возвращаемый GetEnumerator метод. Получатель чего-то обход не определяется Visual Базовый, а скорее с помощью MoveNext метод объекта перечислителя. это означает, что вы не сможете предсказать, какой элемент коллекция будет возвращена первой в элементе, или который будет следующим возвращается после заданного элемента.

Это совсем не то же самое, что сказать, что на него нельзя положиться - на него можно положиться , если вы знаете, что коллекция, которую вы повторяете, даст результаты в желаемый заказ . Это не значит, что он будет выбирать элементы случайным образом. Поведение в терминах IEnumerable / IEnumerable четко определено на этой странице.

Наиболее важными исключениями из предсказуемого упорядочения являются словари и множества, которые естественно неупорядочены.

Чтобы отменить IEnumerable , используйте Enumerable.Reverse - но если вам нужно перебрать в обратном порядке коллекцию, которая индексируется по позиции (например, массив или Список

45
ответ дан 27 November 2019 в 16:02
поделиться

К сожалению, в документации MSDN на For Each указано, что конструкция For Each явно используется для случаев, когда порядок итерации не важен (неупорядоченные наборы и т.п.) . Так что, к сожалению, нет концепции реверсирования For Each, поскольку порядок в любом случае не определен.

Удачи!

13
ответ дан 27 November 2019 в 16:02
поделиться

Вам нужно будет сделать что-то вроде:

For i as integer = myStringList.Count-1 to 0 step -1
    dim s as string = myStringList.Item(i)
    ' Do your stuff with s
Next i

Но, насколько я знаю, вы не можете сделать "For ... Each" в обратном порядке, хотя в некоторых случаях это было бы неплохо.

38
ответ дан 27 November 2019 в 16:02
поделиться

Вызовите метод System.Linq.Enumerable.Reverse , чтобы получить IEnuemrable (Of TSource) в порядке, обратном вашему перечислимому источнику.

12
ответ дан 27 November 2019 в 16:02
поделиться

Причина, по которой это невозможно сделать, заключается в том, что в качестве базовой особенности дизайна For Each может выполнять итерацию по перечислимому без последнего элемента или с еще неизвестным последним элементом.

1
ответ дан 27 November 2019 в 16:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: