Эквивалент Objective-C для Smalltalk в at: aKey ifAbsentPut: aBlock?

Рассмотрим следующий код:

rankedGames at: rank ifAbsentPut: [SortedCollection sortBlock: [:one :two | one name < two name]].

Я только видел, что этот "удобный" метод использовался пару раз в коде Smalltalk, и там есть такая SortedCollection без прямого эквивалента Obj-C. Что такое эквивалент Objective-C?

1 ответ

Что такое эквивалент Objective-C?

Прямого эквивалента нет. NSMutableArray дает вам упорядоченную коллекцию, которая может быть отсортирована, так что это, вероятно, ближе всего к SortedCollection, Я не знаю однострочного эквивалента at:ifAbsentPut:так что вы обычно делаете это в несколько строк:

// assume rankedGames is an array of mutable arrays
NSMutableArray *games = rankedGames[rank];
if (games == nil) {
    games = [NSMutableArray array];
}
Другие вопросы по тегам