Обновление списка элементов в списке? [дублировать

StackOverflow https://stackoverflow.com/questions/5860980

  •  28-10-2019
  •  | 
  •  

Вопрос

Возможный дубликат:
Обновите список списка элементов в одном списке?

У меня есть список значений, как показано ниже:

[ ["Off","Off","Off"],
  ["Off","Off","Off"],
  ["Off","Off","Off"] ]

и хотел бы вернуть следующее:

[ ["Off","Off","Off"],
  ["Off",*"On"*,"Off"],
  ["Off","Off","Off"] ]

У меня есть следующая функция, которая сам по себе работает только для отдельного списка:

replaceAll 0 newValue (x:xs) = newValue:xs
replaceAll b newValue (x:xs) = x:replaceAll (b-1) newValue xs

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

Все еще пытаюсь разобраться с головой всей (x: xs).

Это было полезно?

Решение

Списки - не лучшая структура для такого рода вещей. Но давайте все равно будем работать со списками.

Мы настраиваем ваш replaceAll Таким образом, вместо того, чтобы предоставлять замену значение, вы предоставляете функцию, которая указывает, как заменить старую на новую.

replaceAll 0 f (x:xs) = f x:xs -- Here's where we transform x using f
replaceAll b f (x:xs) = x:replaceAll (b-1) f xs

Теперь мы можем использовать replaceAll На сами по себе замена, которую мы хотим в определенном ряду матрицы:

test = replaceAll 1 (replaceAll 1 (const "On")) yourList

А const "On" Функция используется, потому что, когда мы добираемся до нашего конкретного элемента, мы больше не хотим ее преобразовать, мы просто хотим заменить его на "On". Анкет Немного для каждого отдельного ряда, мы делать хочу изменить это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top