Это работает:
Iterator<Integer> iter = l.iterator();
while (iter.hasNext()) {
if (iter.next() == 5) {
iter.remove();
}
}
я предположил, что, так как цикл foreach является синтаксическим сахаром для итерации, использование итератора не помогло бы..., но это дает Вам этот .remove()
функциональность.
К сожалению, большинство ответов здесь является слишком техническим для новичка.
LHYFGG имеет соответствующую главу по нему - который необходимо считать, если Вы уже не имеете, но в сущности:
where
просто синтаксическая конструкция (не сахар ), которые являются полезны только в функциональных определениях . let ... in
, само выражение , таким образом можно использовать их везде, куда можно поместить выражение. Будучи самим выражением, это не может использоваться для обязательных вещей для защиты. Наконец, можно использовать let
в пониманиях списка также:
calcBmis :: (RealFloat a) => [(a, a)] -> [a]
calcBmis xs = [bmi | (w, h) <- xs, let bmi = w / h ^ 2, bmi >= 25.0]
-- w: width
-- h: height
Мы включаем , позволяют внутренняя часть понимание списка во многом как, мы были бы предикат, только она не фильтрует список, она только связывает с именами. Имена определили во внутренней части, которой позволяют, понимание списка видимо к функции вывода (часть перед
|
) и все предикаты и разделы, которые прибывают после привязки. Таким образом, мы могли сделать наш функциональный возврат только BMIs людей> = 25: