Swift 2021 бесплатные уроки для новичка. Часть 2
Часть 2 (11-13 уроки)
// Lesson 11 / Составной тип данных Tuple
// Видео 1:32:23
let a = 10
// a где число 10 по умолчанию является Int
let b = "Hello"
// b где слово Hello по умолчанию является Sting
// tuple — тюпле
// Это не коллекция, а набор разных данных. (в скобках tuple)
var person = (name: "Igor", age: 38, isMarried: true, weight: 90.5)
// переменная персона = (имя: «Игорь», возраст 38, Женат: да)
var tuple1 = (a, b)
var tuple2 = (10, "Hello")
// a = 10 Int // b = "Hello" String
// a = 10 Int // "Hello"
// в скобках справа мы видим что tuple1 0 — 10, 1 — Hello, и.т.д.
var tuple3: (Int, String)
tuple3 = (45, "Swift")
// Все это варианты записи и присваивания tuple
var tuple4 = (name: "Igor", age: 38, isMarried: true, weight: 90.5)
var (weight, height) = (75, 170) // это тоже tuple5
// Пример 1
// Как работать с tuple //используя индексы
// Возьмем tuple4 / методы разбора
var tuple4 = (name: "Igor", age: 38, isMarried: true, weight: 90.5)
tuple4.0
tuple4.1
tuple4.2
tuple4.3
// 1 метод как разобрать
// 2 метод как разобрать (выбираем что хотим вывести)
// 2 метод как разобрать
// Пример 2
let info = ("Ivanov", 31, 80.5) // Константа задаем значения
var (lastName, age, weight) = info // Переменная присваиваем значения
lastName
age
weight
// Если мы хотим вывести только вес (weight)
let info = ("Ivanov", 31, 80.5)
var (_, _, weight) = info
weight
// В таком случае выводится значение 80.5 (weight) вес
// Как причислить значения
var point1 = (x:4, y:3)
var point2 = (x:2, y:6)
point2 = point1
point2
var point1 = (x:"Car", y:"Wash")
var point2 = (x:"Car", y:"Clear")
point2 = point1
point2
// Lesson 12 / Опциональные типы данных
// nil
// Видео 1:46:54
// Есть разница между 0 и ничего.
// Пакет пуст? или Пакета нет. (Пуст 0)(Пакета нет nil)
// Отправить на сервер запрос, какая погода?
// Придет ответ: 0 градусов или ответа не будет вовсе.
// 0 вполне определенное число.
// Пример 1
var age: Int? = 12
age = nil
age + 1
// Возможна такая операция? В ничего положить яблоко?
// age + 1
// Ошибка / В вашей программе всегда должны быть привязаны значения.
var age: Int? = 12
if age == nil {
print("age is nil")
} else {
print(age)
}
// Будет ошибка.
// Добавим постфикс ( ! ) age!
var age: Int? = 12
if age == nil {
print("age is nil")
} else {
age! + 1
}
// Силовое, принудительное разворачивание, когда добавляем !
// Force Unwrapping ( ! )
// Стараться не использовать иначе при ошибке приложение вылетает.
let str = "Clear 10"
let num = Int(str)!
// Не получилось причине Int содержитзначение String"Clear 10"
let str = "10"
let num = Int(str)!
// Получилось, наше значение было только Int "10" попробуйте «10.342»
// Пример 2 / Optional Binding / Опциональное связывание
var age: Int? = 12
if let safeAge = age {
safeAge
} else {
print("age = nil")
}
// Принт не выводит.
// Пример 3 / Optional Binding / Опциональное связывание
var age: Int? = 12
if var safeAge = age {
safeAge += 1
print("Age = \(Int(safeAge))")
} else {
print("age = nil")
}
// Попробуйте вместо Int вывести Double или String
// Пример 4 / Optional Binding / Опциональное связывание
let yearOfBirth = "1980"
Int(yearOfBirth)
if let safeYearOfBirth = Int(yearOfBirth) {
safeYearOfBirth
}
// Пример 5 / Optional Binding / Опциональное связывание
var example: String? = "Hello"
print(example ?? "example = nil")
// String? — нет данных по строке по этому она nil
// переменная пример: СтрокаНеизвестна = «Hello»
// печатать(пример ?? example = nil )
// напечатал Hello потому что вторая строка nil (СтрокаНеизвестна)
// попробуйте вместе "Hello" вывести пустую строку " " что будет?
// или так
// Что такое: / Nil Coalescing Operator / ??
Для удобства разворачивания optionals ввели Nil Coalescing Operator ??, который присваивает значение указанное справа после ?? если значение слева от ?? равно nil
т.к. customHeight не присвоено значение (текущее = nil) – height будет в итоге присвоено значение defaultHeight
т.к. customHeight не присвоено значение (текущее = nil) – height будет в итоге присвоено значение defaultHeight
В этом случае height присвоится значение customHeight = 20
let defaultHeight = 100
var customHeight : Int?
var height = customHeight ?? defaultHeight
customHeight
defaultHeight
customHeight = 20
height = customHeight ?? defaultHeight
customHeight // Ответ 20
defaultHeight // Ответ 80
// Implicitly Unwrapped Optional / Неявно извлеченный опционал / !
@IBOutlet var usernameField: UITextField!
Мы используем восклицательный знак ! после типа свойства, что обозначает неявно извлеченный опционал.
// Int / Обычный интеджер
// Int? / Опциональный интеджер
// Int! / Неявно извлеченный интеджер / первый раз будет nil а дальше будут обычные значения /
var number1: Int! = nil
number1 = 10
number1 = number1 + 1
// Пробуйте свои варианты.
// Lesson 13 / Массивы / Массив (Array)
// Коллекции:
// Массив (Array), Множество (Set), Словарь (Dictionary)
// Видео 2:04:41 Массивы
// Массив (Array)
// let Константа (Коллекция после сознания неизменна.)
// var Переменная (Коллекцию можно менять, добавлять, удалять.)
var array1 = Array()
// Полная форма записи массива (храним строки) ()
var array2 = [String]()
// Краткая форма записи массива (предпочтительней)
// Пример 1 / Создаем неизменный let массив фрукты (fruits)
let apple = "apple"
let lemon = "lemon"
let orange = "orange"
let strawberry = "strawberry"
let fruits = [apple, lemon, orange, strawberry]
// Пример 2 / Можем изменять его через
// методы и свойства — вносить изменения
// индексы и значения — выводить и показывать
var shoppinglist = ["eggs","milk","bread","flour","sweets"]
shoppinglist.count
shoppinglist.isEmpty
// .count Справа видим цифру 5 которая нам говорит о том что в массиве.
// .isEmpty пустой ли наш массив? false — нет, заполнен (не пустой)
// или можем добавить в массив var shoppinglist = []
shoppinglist.append("butter")
// Вывести информацию из массива можно [0] где число в скобках = индексу
shoppinglist[0]
// Попробуйте вывести milk и flour или составьте свой массив.
// Заменим milk на salt [1] = "salt"
shoppinglist[1] = "salt" // Заменим "milk" на "salt"
shoppinglist[1]
for item in shoppinglist {
print(item)
}
для предметов в спискеШопЛиста {
распечатать (предметы)
}
// Распечатаем список с Индексом и Названиями
for (index, value) in
shoppinglist.enumerated() {
print("Покупки \(index): \(value)")
}
// Что, откуда берется.
// Что такое .enumerated (Читать)
for (n, c) in "Swift".enumerated() {
print("По буквам \(n): '\(c)'")
}
// Что получилось.
// Или вот так
for (x, y) in shoppinglist.enumerated() {
print("Покупки \(x): \(y)")
}
// А если мы забыли перец? «pepper»
var shoppinglist = ["eggs","milk","bread","flour","sweets"]
for (x, y) in shoppinglist.enumerated() {
print("Покупки \(x): \(y)")
}
shoppinglist += ["pepper"]
// Пробуйте
var numbers1 = [1, 2, 3, 4, 5]
var numbers2 = [6, 7, 8]
var numbers3 = [9]
var numbers4 = numbers1 + numbers2 + numbers3
print(numbers4)
// Lesson 14 / Множество / Множество (Set)
// Коллекции:
// Массив (Array), Множество (Set), Словарь (Dictionary)
// Видео 2:18:33 Множества
Множество (Set)
var set = Set()
// Форма записи множества (храним строки) Set()
var listOfSports: Set = ["Badminton", "Bowlling", "Tennis", "Hockey", "Running"]
// Поскольку определяется автоматически упростим нашу запись / Set = []
var listOfSports: Set = ["Badminton", "Bowlling", "Tennis", "Hockey", "Running"]
listOfSports.count
listOfSports.isEmpty
listOfSports.insert("Fishing")
listOfSports.remove("Bowlling")
listOfSports.contains("Tennis")
listOfSports.sorted()
listOfSports
// .count Справа видим цифру 5 показывает число элементов.
// .isEmpty пустой ли наш массив? false — нет, заполнен (не пустой)
// .insert добавляем
// Неупорядоченная коллекция по этому нет .append вместо него .insert
// .remove — удаляем элемент
// .contains — проверяем есть такой или нет Есть — (True), Нет — (False)
// .sorted() — сортировка, расстановка по возрастанию.
// При каждом обновлении меняются местами.
// Bowlling — пропал. Tennis — True (есть)
// Итерации - повторения
for sports in listOfSports {
print(sports)
}
// Сортировать способом по возрастанию — .sorted()
for sports in listOfSports.sorted() {
print(sports)
}
// По алфавиту: B, F, H, R, T,
var numbers: Set = [5, 1, 3, 2, 9, 8, 7]
for numbers in numbers.sorted() {
print(numbers)
}
// для каждого номера в нашем сете .сортировать() { печатать (номера) }
//
let car1 = Set(["Ford", "Mazda", "Lada"])
let car2 = Set(["Ford", "Mazda", "Lada", "Ford", "Mazda", "Lada"])
// в сете car2 все дубли удаляться.
// Вывод Set Множества содержат только УНИКАЛЬНЫЕ значения.
let oddNumbers: Set = [1, 3, 5, 7, 9]
let evenNumbers: Set = [0, 2, 4, 6, 8]
let primeNumbers: Set = [2, 3, 5, 7, 11]
oddNumbers.union(evenNumbers).sorted()
oddNumbers.intersection(evenNumbers).sorted()
oddNumbers.subtracting(primeNumbers).sorted()
oddNumbers.symmetricDifference(primeNumbers).sorted()
- Используйте метод union (_:) для создания нового множества состоящего из всех значений обоих множеств. (Apple)
- Используйте метод intersection (_:) для создания нового множества из общих значений двух входных множеств. (Apple)
- Используйте метод subtracting (_:) для создания множества со значениями не принадлежащих указанному множеству из двух входных. (Apple)
- Используйте метод symmetricDifference (_:) для создания нового множества из значений, которые не повторяются в двух входных множествах. (Apple)
// Читать на нашем нужно (здесь)
// Продолжение / Часть 3 / ( ПЕРЕЙТИ)
// Lesson 15 / Словари / Словарь (Dictionary)
// Видео 2:34:27 Словари