Как назначить контекст для веб-работника в nodejs

Что-то вроде этого для сдвига влево ...

public static void ShiftLeft(List lst, int shifts)
{
    for (int i = shifts; i < lst.Count; i++)
    {
        lst[i - shifts] = lst[i];
    }

    for (int i = lst.Count - shifts; i < lst.Count; i++)
    {
        lst[i] = default(T);
    }
}

Для переключения вправо это немного сложнее, потому что мы должны копировать в обратном направлении

public static void ShiftRight(List lst, int shifts)
{
    for (int i = lst.Count - shifts - 1; i >= 0; i--)
    {
        lst[i + shifts] = lst[i];
    }

    for (int i = 0; i < shifts; i++)
    {
        lst[i] = default(T);
    }
}

. С массивами это гораздо проще, потому что Array имеет очень мощные методы:

public static void ShiftLeft(T[] arr, int shifts)
{
    Array.Copy(arr, shifts, arr, 0, arr.Length - shifts);
    Array.Clear(arr, arr.Length - shifts, shifts);
}

public static void ShiftRight(T[] arr, int shifts)
{
    Array.Copy(arr, 0, arr, shifts, arr.Length - shifts);
    Array.Clear(arr, 0, shifts);
}

И да, Array.Copy защищен от overleap: Если sourceArray и destinationArray перекрываются , этот метод ведет себя так, как если бы исходные значения sourceArray сохранялись во временном месте до того, как файл назначения был перезаписан.

0
задан eddyparkinson 4 December 2014 в 07:08
поделиться