static private IEnumerator ForEachImpl <T>(T[] inElements, Routine.IndexedElementOperation <T> inOperation) { for (int i = 0; i < inElements.Length; ++i) { inOperation(i, inElements[i]); yield return(null); } }
/// <summary> /// Executes an operation on each element in an array, additionally passing in the element index. /// </summary> static public AsyncHandle ForEach <T>(T[] inElements, Routine.IndexedElementOperation <T> inOperation, AsyncFlags inFlags = AsyncFlags.Default) { if (inElements == null || inElements.Length == 0 || inOperation == null) { return(AsyncHandle.Null); } return(Schedule(ForEachImpl <T>(inElements, inOperation), inFlags)); }
static private IEnumerator ForEachImpl <T>(IEnumerable <T> inElements, Routine.IndexedElementOperation <T> inOperation) { int idx = 0; foreach (var element in inElements) { inOperation(idx++, element); yield return(null); } }