Skip to content

Instantly share code, notes, and snippets.

@TPAKC
Last active December 24, 2018 18:30
Show Gist options
  • Save TPAKC/af072414b364db03dbef894ac9c45493 to your computer and use it in GitHub Desktop.
Save TPAKC/af072414b364db03dbef894ac9c45493 to your computer and use it in GitHub Desktop.
/* Типы */
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