Swift — это язык программирования для разработки приложений для IOS и Mac OS, и ему суждено стать главным компьютерным языком в мобильном и настольном пространстве. Созданный для замены Objective-C, код Swift может взаимодействовать с obj-c, но обеспечивает более удобный для чтения синтаксис.
Objective-C Hello world:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSLog (@"hello world");
[pool drain];
return 0;
}
Swift Hello World:
var str = "Hello, World!"
print(str)
Довольно просто по сравнению с obj-c, верно?
Давайте приступим:
Установка:
Для выполнения swift-кода на вашей машине должен быть установлен swift.
Вы можете скачать его отсюда
Переменные, константы и литералы Swift
Переменные:
Переменная — это контейнер для хранения данных.
В swift мы используем ключевое слово var
, чтобы объявить переменную, и она является динамической, то есть вам не нужно назначать типы данных, но вы можете это сделать, если захотите.
var name = "Rick"
print(name)
//output: rick
Назначение типов данных переменным
var siteName: String
siteName = "dev.to"
print(siteName)
Вы можете назначить типы данных по : type
. Например: number: Int
name: String
.
Имена переменных должны начинаться с буквы, знака подчеркивания _
или знака доллара $
. Например,
// valid
var a = "hello"
var _a = "hello"
var $a = "hello"
//invalid
var 1a = "hello"
Swift чувствителен к регистру. Поэтому A и a — это разные переменные. Например,
var A = 5
var a = 55
print(A) // 5
print(a) // 55
Константы Swift
Константа — это особый тип переменной, значение которой не может быть изменено. Например,
let x = 80
x = 60
print(x)
//error
main.swift:4:1: error: cannot assign to value: 'x' is a 'let' constant
Избегайте использования зарезервированных ключевых слов [String, for и т.д.] для имен переменных.
Литералы Swift
Литералы — это представления фиксированных значений в программе. Они могут быть числами, символами, строками и т.д. Например, «Hello, World!», 12, 23.0, «C» и т.д.
Литералы часто используются для присвоения значений переменным или константам.
print("This is a hardcoded string or a literal")
Примеры литералов:
//string
let someString: String = "Swift is fun"
//unicode characters
let someCharacter: Character = "S"
//boolean
let pass: Bool = true
//floating point
let piValue: Float = 3.14
В Swift существует четыре типа целочисленных литералов:
Тип Пример Примечания
-Десятичные 5, 10, -68 Обычные числа.
-Двоичные 0b101, 0b11 Начинаются с 0b.
-Октальное 0o13 Начинается с 0o.
-Шестидесятичные 0x13 Начинаются с 0x.
Типы данных:
Float : 5.4
Int : 5
Character : A
String : Hi
Double 27.7007697012432
Bool true/false
Swift Basic Input and Output:
print("Swift is powerful")
// Output: Swift is powerful
Здесь функция print() выводит на экран строку, заключенную в двойную кавычку.
Синтаксис функции print()
В приведенном выше коде функция print() принимает один параметр.
Однако на самом деле синтаксис функции print принимает 3 параметра
print(items: separator: terminator:)
Здесь,
элементы — значения внутри двойной кавычки
разделитель (необязательный) — позволяет нам разделять несколько элементов внутри функции print().
терминатор (необязательный) — позволяет нам добавлять специфические значения, такие как новая строка «n», табуляция «t».
print() с терминатором:
// print with terminator space
print("Good Morning!", terminator: " ")
print("It's rainy today")
Output
Good Morning! It's rainy today
Обратите внимание, что мы включили терминатор: » » после конца первого оператора print().
Таким образом, мы получаем вывод в виде одной строки, разделенной пробелом.
print() с разделителем
Вывод
Новый год. 2022. До скорой встречи!
В приведенном выше примере оператор print() включает несколько элементов, разделенных запятой.
Обратите внимание, что мы использовали необязательный разделитель параметров: «. » внутри оператора print(). Следовательно, вывод включает элементы, разделенные . а не запятой.
конкатенированные строки:
Печать переменных и строк вместе:
var year = 2014
print("Swift was introduced in (year)")
-Текст: Swift был представлен в
-Переменная: /(год)
Для получения входных данных в swift мы используем readLine()
print("Enter your favorite programming language:")
let name = readLine()
print("Your favorite programming language is (name!).")
Комментарии
//single line comments
/*multi line
comments*/
Optional
Как объявить опциональный тип?
Вы можете просто представить тип данных как Optional, добавив ! или ? к типу. Если Optional содержит значение, он возвращает значение как Optional, если нет — возвращает nil.
Пример 1: Как объявить опциональный тип в Swift?
var someValue:Int?
var someAnotherValue:Int!
print(someValue)
print(someAnotherValue)
Операторы:
Двоичные
Вы можете заменить этот код
// check the number is positive or negative
let num = 15
var result = ""
if (num > 0) {
result = "Positive Number"
}
else {
result = "Negative Number"
}
print(result)
на
// ternary operator to check the number is positive or negative
let num = 15
let result = (num > 0) ? "Positive Number" : "Negative Number"
print(result)
Побитовые операторы
Вот список различных побитовых операторов, включенных в Swift
Название операторов Пример
& Побитовое И a & b
| Побитовое ИЛИ a | b
^ Побитовое XOR a ^ b
~ Побитовое НЕ ~ a
<< Побитовый сдвиг влево a << b
Побитовый сдвиг вправо a >> b
Управление потоком:
Если:
let number = 10
// check if number is greater than 0
if (number > 0) {
print("Number is positive.")
}
print("The if statement is easy")
Переключение:
лучший подход if else.
Пример:
switch (expression) {
case value1:
// statements
case value2:
// statements
...
...
default:
// statements
}
Прикладной пример:
// program to find the day of the week
let dayOfWeek = 4
switch dayOfWeek {
case 1:
print("Sunday")
case 2:
print("Monday")
case 3:
print("Tuesday")
case 4:
print("Wednesday")
case 5:
print("Thursday")
case 6:
print("Friday")
case 7:
print("Saturday")
default:
print("Invalid day")
}
ЦИКЛ
цикл — это часть кода, которая будет выполняться до тех пор, пока одно или несколько значений не будут заданы.
for in:
for val in sequence{
// statements
}
Пример: Цикл по массиву
// access items of an array
let languages = ["Swift", "Java", "Go", "JavaScript"]
for language in languages {
print(language)
}
Цикл for с предложением where
В Swift мы также можем добавить предложение where в цикл for-in. Это используется для реализации фильтров в цикле. То есть, если условие в предложении where возвращает true, цикл будет выполнен.
// remove Java from an array
let languages = ["Swift", "Java", "Go", "JavaScript"]
for language in languages where language != "Java"{
print(language)
}
Swift while Loop
Цикл while в Swift используется для выполнения определенного кода до тех пор, пока не будет выполнено определенное условие.
Синтаксис цикла while следующий:
while (condition){
// body of loop
}
Здесь,
-Цикл while оценивает условие внутри круглой скобки ().
-Если условие равно true, выполняется код внутри цикла while.
-условие оценивается снова.
-Это продолжается до тех пор, пока условие не станет ложным.
-Когда условие становится ложным, цикл останавливается.
Пример 1: Цикл while в Swift
// program to display numbers from 1 to 5
// initialize the variable
var i = 1, n = 5
// while loop from i = 1 to 5
while (i <= n) {
print(i)
i = i + 1
}
Guard:
Синтаксис оператора guard
Синтаксис оператора guard следующий:
guard expression else {
// statements
// control statement: return, break, continue or throw.
}
Здесь выражение возвращает либо true, либо false. Если выражение оценивается как
true — операторы внутри блока кода guard не выполняются
false — операторы внутри блока кода guard выполняются.
Примечание: Для выхода из области действия guard мы должны использовать return, break, continue или throw.
Пример:
var i = 2
while (i <= 10) {
// guard condition to check the even number
guard i % 2 == 0 else {
i = i + 1
continue
}
print(i)
i = i + 1
}
Оператор break используется для немедленного завершения цикла, когда он встречается.
Оператор continue используется для пропуска текущей итерации цикла, и поток управления программы переходит к следующей итерации.
Массив:
Массив — это структура данных, в которой хранится несколько данных.
// an array of integer type
var numbers : [Int] = [2, 4, 6, 8]
print("Array: (numbers)")
Доступ к элементам массива
В Swift каждый элемент массива ассоциируется с номером. Это число называется индексом массива.
Мы можем получить доступ к элементам массива, используя номер индекса (0, 1, 2 …). Например,
var languages = ["Swift", "Java", "C++"]
// access element at index 0
print(languages[0]) // Swift
// access element at index 2
print(languages[2]) // C++
Добавление элементов в массив
Swift Array предоставляет различные методы для добавления элементов в массив.
- Использование append()
Метод append() добавляет элемент в конец массива. Например,
- Использование insert()
Метод insert() используется для добавления элементов в указанную позицию массива. Например,
array.insert(2, at: 1)
SET:
Создание набора в Swift
Вот как мы можем создать набор в Swift.
// create a set of integer type
var studentID : Set = [112, 114, 116, 118, 115]
print("Student ID: (studentID)")
укажите тип набора:
-remove() — удалить элемент
-insert() — вставить значение
-removeFirst() — удалить первый элемент набора
-removeAll() — удалить все элементы множества
sorted() сортирует элементы множества
forEach() выполняет указанные действия над каждым элементом
contains() ищет указанный элемент в множестве
randomElement() возвращает случайный элемент из множества
firstIndex() возвращает индекс заданного элемента
Словарь:
var capitalCity = ["Nepal": "Kathmandu", "Italy": "Rome", "England": "London"]
print(capitalCity)
Добавление элементов в словарь
Мы можем добавлять элементы в словарь, используя имя словаря через []. Например,
var capitalCity = ["Nepal": "Kathmandu", "England": "London"]
print("Initial Dictionary: ",capitalCity)
capitalCity["Japan"] = "Tokyo"
print("Updated Dictionary: ",capitalCity)
print(capitalCity["Japan"])
Методы словаря
Описание метода
sorted() сортирует элементы словаря
shuffled() изменяет порядок элементов словаря
contains() проверяет наличие указанного элемента
randomElement() возвращает случайный элемент из словаря
firstIndex() возвращает индекс указанного элемента
removeValue() метод для удаления элемента из словаря
Кортеж:
Создание кортежа
В Swift мы используем круглую скобку () для хранения элементов кортежа. Например,
var product = ("MacBook", 1099.99)
Here, product is a tuple with a string value Macbook and integer value 1099.99.
Как и в массиве, каждый элемент кортежа представлен индексами (0, 1, …), где первый элемент находится под индексом 0.
Мы используем номер индекса для доступа к элементам кортежа. Например,
// access the first element
product.0
// access second element
product.1
// modify second value
product.1 = 1299.99
В Swift мы также можем задавать имена для каждого элемента кортежа. Например,
var company = (product: "Programiz App", version: 2.1)
company.product //access it
Функции:
Функция — это блок кода, который выполняет определенную задачу.
Предположим, нам нужно создать программу для создания круга и его раскрашивания. В этом случае мы можем создать две функции:
функция для рисования круга
функция для раскрашивания круга.
Таким образом, функция помогает нам разбить программу на более мелкие фрагменты, чтобы сделать наш код многократно используемым и простым для понимания.
В Swift существует два типа функций:
Определяемая пользователем функция — мы можем создавать свои собственные функции в соответствии с нашими требованиями.
Функции стандартной библиотеки — это встроенные в Swift функции, которые доступны для использования.
Давайте сначала узнаем о пользовательских функциях.
Объявление функций в Swift
Синтаксис для объявления функции следующий:
func functionName(parameters)-> returnType {
// function body
}
Здесь,
func — ключевое слово, используемое для объявления функции
functionName — любое имя, данное функции
параметры — любое значение, передаваемое функции
returnType — определяет тип значения, возвращаемого функцией.
Рассмотрим пример,
func greet() {
print("Hello World!")
}
Здесь мы создали функцию greet(). Она просто печатает текст Hello World!
У этой функции нет параметров и типа возврата. О типе возврата и параметрах мы узнаем позже в этом учебнике.
Вызов функции в Swift
В приведенном выше примере мы объявили функцию greet()
.
func greet() {
print("Hello World!")
}
Теперь, чтобы использовать эту функцию, нам нужно вызвать ее.
Вот как мы можем вызвать функцию greet() в Swift.
// call the function
greet()
Работа рекурсии в Swift
func recurse() {
... ...
recurse()
... ...
}
recurse()
Здесь функция recurse() вызывает себя снова и снова. На рисунке ниже показано, как работает рекурсия.
В Swift закрытие — это специальный тип функции без имени функции. Например,
{
print("Hello World")
}
Здесь мы создали закрытие, которое печатает Hello World.
Прежде чем изучать закрытия, убедитесь, что вы знаете о функциях Swift.
Декларация закрытия в Swift
Мы не используем ключевое слово func для создания закрытия. Вот синтаксис для объявления закрытия:
{ (parameters) -> returnType in
// statements
}
Здесь
параметры — любое значение, передаваемое закрытию
returnType — определяет тип значения, возвращаемого закрытием
in (необязательно) — используется для отделения параметров/ returnType от тела закрытия
// declare a closure
var greet = {
print("Hello, World!")
}
// call the closure
greet()
Если я попытаюсь описать ООП в этом блоге, он будет очень большим.
поэтому я сделаю отдельный блог об этом.
Купите мне кофе