Кавычка предотвращает выполнение или оценку формы, поворачивая его вместо этого в данные. В целом можно выполнить данные к тому времени eval'ing это.
кавычка создает структуры данных списка, например, следующее эквивалентны:
(quote a)
'a
Это может также использоваться для создания списков (или деревья):
(quote (1 2 3))
'(1 2 3)
Вы являетесь, вероятно, лучшими от получения книги introductary по шепелявости, такой как Практический язык Common LISP (который доступен для чтения онлайн).
LINQ здесь не помогает, но вы можете использовать List
:
List
.ForEach Method Выполняет указанный действие над каждым элементом списка.
Пример:
myList.ForEach(p => myFunc(p));
Значение, переданное лямбда-выражению, является элементом списка, поэтому в этом примере p
является длинным
if myList
- это список
.
Как отмечали другие авторы, вы можете использовать List
.
Однако вы можете легко написать метод расширения, который позволит вам использовать ForEach на любом IEnumerable
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action)
{
foreach(T item in source)
action(item);
}
Это означает, что теперь вы можете делать:
myList.Where( ... ).ForEach( ... );
Вы можете использовать метод List.ForEach как таковой:
myList.ForEach(p => myFunc(p));
Нет - если вы хотите вызвать функцию для каждого элемента в списке, вы должны вызвать функцию для каждого элемента в списке.
Однако вы можете использовать метод IList
в качестве синтаксического сахара, чтобы сделать «бизнес-конец» кода более читаемый, например:
items.ForEach(item => DoSomething(item));
Если вы не хотите использовать метод ForEach List
, а используйте IEnumerable
(как это часто бывает, когда «LINQ: ing»), я предлагаю MoreLINQ , написанный Джоном Скитом и др.
MoreLINQ предоставит вам ForEach, а также Pipe (и множество других методы), который выполняет действие для каждого элемента, но возвращает тот же IEnumerable
(по сравнению с void).