Пример, который вы даете, является отличным. Закрытие - это механизм абстракции, который позволяет очень осторожно разделить проблемы. Ваш пример - это случай разделения инструментов (подсчета вызовов) на семантику (API отчетности об ошибках). Другие применения включают в себя:
function proximity_sort(arr, midpoint) {
arr.sort(function(a, b) { a -= midpoint; b -= midpoint; return a*a - b*b; });
}
function counter() {
var a = 0;
return {
inc: function() { ++a; },
dec: function() { --a; },
get: function() { return a; },
reset: function() { a = 0; }
}
}
Yes. They are case sensitive.
PHP array indexes act as hash tables in your example. A capital letter "A" and a lowercase letter "a" have different hash values, therefore they will be different indexes.
Это достаточно легко проверить самостоятельно.
$dogs = array('Dog' => 'Wuff', 'dog' => 'wuff', 'DOG' => 'WUFF');
var_dump($dogs);
Yes, just like variable names (but not function names), hash keys are case-sensitive.
Хотя это не относится к системе, с которой знакомо большинство людей (Windows), при приближении к любому новому языку или среде разумно предположить, что она будет чувствительна к регистру. PHP присутствует практически со всеми остальными языками и средами, которые широко используются. Наиболее заметными исключениями, которые приходят на ум (помимо вышеупомянутой Windows), являются SQL и Delphi (Pascal).