Last active
December 24, 2018 18:30
-
-
Save TPAKC/af072414b364db03dbef894ac9c45493 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Типы */ | |
let redColor = "red"//константа, которую нельзя изменять | |
var a = 5 //переменная, которую можно изменять | |
println("Red color =\(redColor)")//Вывод в консоль | |
let hex = 0xff //Создание константы 16-ичного числа ff = 255, b=8-ичная | |
let c = (Double)b + a //преображение типа | |
let c : Double = 5;//Явное назначение типа | |
typealias AlexBakay: Int | |
let c: AlexBakay =5 | |
let mas = (1,"Hello",4.3,true)//Тюпл | |
let mas: (Int, String, Double, Bool) = (1,"Hello",4.3,true)//Тюпл с явноуказанными типами данных | |
let (number, strok, dec, da) = mas //После этого можем обращаться к эллементам с массива выше по данным переменным | |
let c = mas.0 //Присваивание к перменной "с" первого эллемента массива "mas" | |
let mas = (number:1, strok:"Hello", dec:4.3, da:true) //После этого можем обращаться к эллементам с массива выше по данным переменным | |
println(mas.number) //Получаем эллемент тюпла по названию | |
var apples: Int? = 5 //есть вариант что переменная станет типом кроме Int также nil | |
let a = apples! + 2 //Вынужденное преобразование становится | |
/* Циклы */ | |
for i in 0.<5 { //0-5 | |
for i in 0..5 { //0-6 | |
println("\(i)") | |
}//-------------------------------- | |
for var i =0; i<9; i++ { | |
println("i = \(i)") | |
}//------------------------------- | |
second: for var i=0;i<1000000;i++ { //second -лейба цикла | |
for j in 0..<20 { | |
if j==10 { | |
break second;//выходим именно с первого цикла | |
} | |
/* Строки */ | |
nameOfString.characters.count//Длина строки | |
let heart = "\u{1F496}"//Юникод, который выведет смайл сердечка | |
/* Массивы */ | |
let array :[String] = ["a", "b", "c"]// неизменяеммый массив :[String] - указание любого типа | |
var array = [String]("a", "b", "c") | |
array.count //размер массива | |
array+=["d"] | |
array[1..4] = ["0"]//Заполнить весь массив нулями | |
array.insert("-", atIndex: 3)//Вставка "-" на 3 индекс | |
array.removeAtIndex(3)//Удаление эллемента под индексом 3 | |
/* Дикшинари */ | |
var dict : [String:String] = ["машина" : "car", "мужик":"man"] //Явное указание(сначала ключ) | |
dict[1] //Вызов эллемента с ключом 1 | |
dict.count //Количество эллементов | |
dict.updateValue("Car", forKey "машина") //Новый результат элемента "мужик" | |
dict.removeValue(forKey: "мужик")//Удаление эллемента с ключом "мужик" | |
/* Свитч */ | |
switch age { | |
case 0...16: println("школота") | |
case 17...21: println("студент") | |
case 22...50: println("мужик") | |
break //относится все еще к 22-50 | |
default: break //что произойдет когда не чего из этого | |
/* Функции */ | |
func calculateMoney(wallet: [Int], type: Int) -> Int { //Создание функции | |
//~~~~~~~~~~~~~~~~~ | |
return sum | |
} | |
let wallet = [100, 5, 1] | |
let money=calculateMoney(wallet, wallet[0])//Вызов функции | |
func calculateMoney(wallet: [Int], type: Int?) -> (total^ Int, count: Int) { //type - может не прийти, обратно возвращаются две п. | |
//~~~~~~~~~~~~~~~~~~~~~ | |
if value==type!&&type!=nil //проверка "пришел ли type?" | |
{ | |
//~~~~~~~~~~~~~~~~~~ | |
} | |
return (sum, count) | |
} | |
let money(sum, count )=calculateMoney(inWallet: wallet)//Вызов функции | |
mutating func// если вам нужно изменить свойства вашей структуры или перечисления изнутри конкретного метода | |
/* Енумы */ | |
enum Action {//Объявление | |
case Walk(meters: Int) //асициатированное значение метры | |
case Run(meters: Int, speed: Int) | |
case Stop | |
case Turn | |
} | |
var action = Action.Run(meters: 20, speed: 15) | |
action = .Stop | |
switch action { | |
case .Stop: println("Stop") | |
case .Walk(let meters):println("walk \(meters) meters") | |
} | |
/* Классы */ | |
/* Отличия структуры от класса: | |
1. Изменять структуру можно при всех проперти и экзамплерях var, у класса можно изменять при let | |
2. При приравнивании классов, вы ссылаетесь на них, при копировании структур вы копируете идентичную структуру(как переменную) | |
*/ | |
class Student {//объявление | |
var name = "No name"//Либо var name : String | |
var age = 20//Либо var age : Int | |
init(){ | |
name = "No Name" | |
age = 20 | |
} | |
init(_name: String, _age:Int) { | |
name = _name | |
age = _age | |
} | |
} | |
struct Resolution { | |
var width = 0 | |
var height = 0 | |
} | |
let student1 = Student() | |
student1.name = "Alex"//структуры так менять нельзя | |
didSet(oldFirstName) { | |
println("did set " + firstName + "instead of " + oldFirstName)//Обсервер, по типу сетера,first - новое имя, old - старое имя | |
} | |
static let maxAge: 100//Свойство типа | |
//Сабскрипты - метод, использующийся для доступа к элементам коллекции или последовательности по назначеным индексам | |
//Наследование - полноценный доступ подкласса ко всем методам, свойствам, которые определены в суперклассе | |
class SubClass: SuperClass{ //Наследование | |
} | |
//Инициализация - подготовительный процесс экземпляра класса, структуры или перечисления для дальнейшего использования | |
//Основная роль инициализаторов -убедиться в том, что новый экземпляр типа правильно инициализирован до того, как будет использован в1. | |
//Деинициализаторы - проводят любую чистку прямо перед тем, как экземпляр класса будет освобожден | |
init() { | |
// инициализация проводится тут | |
} | |
//ARC - automatic reference counting (автоматический подсчет ссылок) для отслеживания и управления памятью вашего приложени | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment