На самом деле, все параметры являются необязательными в функциях JS. Нет предупреждения или ошибки, если вы пропустите параметр.
Вы можете установить значения по умолчанию, такие как
function throw_cat(dist){
dist = typeof dist=='undefined' ? 20 : dist;
//OR
dist = dist || 20; //this will assign it to 20 if you pass 0 or another 'falsy' value, though. May be good if you expect a string. String '0' stays, '' or null assigns the default
//etc...
}
Нет, NSDictionary
не поддерживает порядок вставки своих ключей.
Если вам нужен словарь, который поддерживает порядок вставки, я бы предложил использовать Фреймворк CHDataStructures , который имеет класс CHOrderedDictionary
(он является потомком NSMutableDictionary
). В документации для CHOrderedDictionary
говорится:
Словарь, который перечисляет ключи в том порядке, в котором они вставлены.
Чтобы воспользоваться преимуществами упорядочения, предоставляются следующие дополнительные операции:
-firstKey
-lastKey
-keyAtIndex:
-reverseKeyEnumerator
Записи значения ключа вставляются так же, как в обычный словарь, включая замену значений для существующих ключей, как подробно описано в -setObject: forKey :. Однако, дополнительная структура используется параллельно для отслеживания порядка вставки, и ключи перечисляются в этом порядке. Если добавляемого ключа в данный момент нет в словаре, он добавляется в конец списка, в противном случае порядок вставки ключа не меняется.
Нет, не заказывалась. Вы можете использовать массив ключей для запоминания порядка, если вам нужно, но словари концептуально представляют собой неупорядоченные пакеты пар ключ-значение.
Ключи в NSD словаре не хранятся в порядке, но вы можете получить их и отсортировать, E. G:
for (key in [[myDict allKeys] sortedArrayUsingSelector:@selector(compare:)])
...