Check-all checkbox должен быть обновлен сам при определенных условиях. Попробуйте нажать на «# select-all-teammembers» , затем снимите отметку с нескольких пунктов и снова нажмите «select-all». Вы можете увидеть несоответствие. Чтобы предотвратить это, используйте следующий прием:
var checkBoxes = $('input[name=recipients\\[\\]]');
$('#select-all-teammembers').click(function() {
checkBoxes.prop("checked", !checkBoxes.prop("checked"));
$(this).prop("checked", checkBoxes.is(':checked'));
});
Кстати, все флажки DOM-объекта должны быть кэшированы, как описано выше.
1 # Это не типизируется с конечным типом. Это означает, что очень немногие (если вообще есть) языки программирования смогут это напечатать.
Однако, как вы продемонстрировали, существует особый тип для x, который позволяет набирать функцию:
x :: t -> B
Где B
- конкретный тип. Это приводит к тому, что apply
набирается как:
apply :: (t -> B) -> B
Обратите внимание, что Хиндли-Милнер не будет наследовать этот тип.
2 # Это легко представить в Haskell (оставлено в качестве упражнения для читателя ...)
Когда дело доходит до примера №1, вам нужно указать тип возвращаемого значения Apply (), и тогда все переданные вами функции x также должны вернуть это. Большинство статически типизированных языков не смогли бы сделать это безопасно без проверок, поскольку переданная вами функция x может возвращать все, что угодно.
В примере № 2 тип объектов итератора таков, что они являются итераторами. Если вы имеете в виду то, что они возвращают, они возвращают итераторы. Я не понимаю, почему это невозможно в статической системе, но, возможно, я что-то упускаю.
Я нашел решение Haskell для # 1 , используя Rank-N-Types (только для GHCi)
{-# LANGUAGE RankNTypes #-}
apply :: (forall a . a -> r) -> r
apply x = x x
apply $ const 42 -- Yields 42