iOS. Приемы программирования - [11]
>@"String 1",
>@"String 2",
>@"String 3"
>];
>__unused NSString *firstString = stringsArray[0];
>__unused NSString *secondString = stringsArray[1];
>__unused NSString *thirdString = stringsArray[2];
Макрос __unused приказывает компилятору «не жаловаться», когда переменная — в нашем случае переменная firstString — объявлена, но ни разу не использовалась. По умолчанию в такой ситуации компилятор выдает в консоль предупреждение, сообщающее, что переменная не используется. В нашем кратком примере мы объявили переменные, но не задействовали их. Поэтому, если добавить вышеупомянутый макрос в начале объявления переменной, это вполне устроит и нас, и компилятор.
Изменяемый массив — это такой массив, в который можно вносить изменения уже после того, как он был создан. Как мы видели ранее, неизменяемый массив не может быть дополнен новой информацией уже после создания. Вот пример неизменяемого массива:
>NSString *string1 = @"String 1";
>NSString *string2 = @"String 2";
>NSString *string3 = @"String 3";
>NSArray *immutableArray = @[string1, string2, string3];
>NSMutableArray *mutableArray = [[NSMutableArray alloc]
>initWithArray: immutableArray];
>[mutableArray exchangeObjectAtIndex:0 withObjectAtIndex:1];
>[mutableArray removeObjectAtIndex:1];
>[mutableArray setObject: string1 atIndexedSubscript:0];
>NSLog(@"Immutable array = %@", immutableArray);
>NSLog(@"Mutable Array = %@", mutableArray);
>Вывод этой программы таков:
>Immutable array = (
>«String 1»,
>«String 2»,
>«String 3»
>)
>Mutable Array = (
>«String 1»,
>«String 3»
>)
Еще одна распространенная коллекция, которая часто встречается в программах для iOS, — это словарь. Словари похожи на массивы, но каждому объекту в словаре присваивается ключ, и по этому ключу вы можете позже получить интересующий вас объект. Рассмотрим пример:
>NSDictionary *personInformation =
>@{
>@"firstName": @"Mark",
>@"lastName": @"Tremonti",
>@"age": @30,
>@"sex": @"Male"
>};
>NSString *firstName = personInformation[@"firstName"];
>NSString *lastName = personInformation[@"lastName"];
>NSNumber *age = personInformation[@"age"];
>NSString *sex = personInformation[@"sex"];
>NSLog(@"Full name = %@ %@", firstName, lastName);
>NSLog(@"Age = %@, Sex = %@", age, sex);
>А вот и вывод этой программы:
>Full name = Mark Tremonti
>Age = 30, Sex = Male
Можно также использовать изменяемые словари, которые довольно сильно похожи на изменяемые массивы. Содержимое изменяемого словаря можно изменить после того, как словарь инстанцирован. Пример:
>NSDictionary *personInformation =
>@{
>@"firstName": @"Mark",
>@"lastName": @"Tremonti",
>@"age": @30,
>@"sex": @"Male"
>};
>NSMutableDictionary *mutablePersonInformation =
>[[NSMutableDictionary alloc] initWithDictionary: personInformation];
>mutablePersonInformation[@"age"] = @32;
>NSLog(@"Information = %@", mutablePersonInformation);
>Вывод этой программы таков:
>Information = {
>age = 32;
>firstName = Mark;
>lastName = Tremonti;
>sex = Male;
>}
Еще можно работать с множествами. Множества похожи на массивы, но любой объект, входящий в состав множества, должен встречаться в нем только один раз. Иными словами, в одном множестве не может быть двух экземпляров одного и того же объекта. Пример множества:
>NSSet *shoppingList = [[NSSet alloc] initWithObjects:
>@"Milk",
>@"Bananas",
>@"Bread",
>@"Milk", nil];
>NSLog(@"Shopping list = %@", shoppingList);
>Запустив эту программу, вы получите следующий вывод:
>Shopping list = {(
>Milk,
>Bananas,
>Bread
>)}
Обратите внимание: элемент Milk упомянут в программе дважды, а в множество добавлен всего один раз. Эта черта множеств — настоящее волшебство. Изменяемые множества можно использовать и вот так:
>NSSet *shoppingList = [[NSSet alloc] initWithObjects:
>@"Milk",
>@"Bananas",
>@"Bread",
>@"Milk", nil];
>NSMutableSet *mutableList = [NSMutableSet setWithSet: shoppingList];
>[mutableList addObject:@"Yogurt"];
>[mutableList removeObject:@"Bread"];
>NSLog(@"Original list = %@", shoppingList);
>NSLog(@"Mutable list = %@", mutableList);
>А вывод будет таким:
>Original list = {(
>Milk,
>Bananas,
>Bread
>)}
>Mutable list = {(
>Milk,
>Bananas,
>Yogurt
>)}
Обсуждая множества и коллекции, следует упомянуть еще два важных класса, о которых вам необходимо знать:
NSOrderedSet — неизменяемое множество, учитывающее, в каком порядке в него добавлялись объекты;
• NSMutableOrderedSet — изменяемый вариант вышеупомянутого изменяемого множества.
По умолчанию множества не учитывают, в каком порядке объекты в них добавлялись. Рассмотрим пример:
>NSSet *setOfNumbers = [NSSet setWithArray:@[@3, @4, @1, @5, @10]];
>NSLog(@"Set of numbers = %@", setOfNumbers);
>Запустив эту программу, получим на экране следующий вывод:
>Set of numbers = {(
>5,
>10,
>3,
>4,
>1
>)}
Но на самом деле мы наполняли множество элементами в другом порядке. Если вы хотите сохранить правильный порядок, просто воспользуйтесь классом NSOrderedSet:
>NSOrderedSet *setOfNumbers = [NSOrderedSet orderedSetWithArray
>:@[@3, @4, @1, @5, @10]];
>NSLog(@"Ordered set of numbers = %@", setOfNumbers);
>Разумеется, вы можете воспользоваться и изменяемой версией упорядоченного множества:
>NSMutableOrderedSet *setOfNumbers =
>[NSMutableOrderedSet orderedSetWithArray:@[@3, @4, @1, @5, @10]];
>[setOfNumbers removeObject:@5];
>[setOfNumbers addObject:@0];
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.
Перед вами — увлекательная книга, которую по достоинству оценит любой неравнодушный программист и даже бывалый питонщик. Она составлена на основе одноименного онлайнового руководства http://docs.python-guide.org/en/latest/ и содержит наработки многочисленных профессионалов и энтузиастов, знающих, что такое Python, и чего вы от него хотите. Проверенные методы и новейшие приемы, собранные в этой книге, помогут вам стать профессиональным Python-программистом и во всеоружии встретить наступающую эпоху Python 3.
IT-принцип «agile» стал мантрой цифровой эпохи. С ростом проектов, переходом от монолитных приложений к системе микросервисов, увеличением и накоплением продуктов возникают вопросы, которые требуют совершенно иного подхода. Теперь наибольший интерес вызывает находящаяся на стыке разработки и операционного управления методология DevOps.DevOps – это не просто набор техник, это философия. Разработчики, зацикленные на пользователях, должны уделять внимание поддержке и ее запросам. Сисадмины должны сообщать о проблемах продукта и вносить свой вклад в улучшение процесса работы.
Эта книга идеально подходит как для начинающих программистов, так и для тех, кто только собирается осваивать Python, но уже имеет опыт программирования на других языках. В ней подробно рассматриваются самые современные пакеты и библиотеки Python. Стилистически издание напоминает руководство с вкраплениями кода, подробно объясняя различные концепции Python 3. Под обложкой вы найдете обширный материал от самых основ языка до сравнительно сложных и узких тем. Прочитав эту книгу, вы не только убедитесь, что Python — это вкусно, но и освоите искусство тестирования, отладки, многократного использования кода, а также научитесь применять Python в различных предметных областях.