Swift. Урок 9 - Enum (Энумы)

preview_player
Показать описание
В этом уроке я рассказываю о Enumerations в Swift и как с ним рабоать.
Рекомендации по теме
Комментарии
Автор

Друг, ты лучший.
Не останавливайся никогда, пусть пока твоя аудитория небольшая, но ты делаешь невероятные вещи. Все получится и у тебя, и у нас

designerpubg
Автор

Вот не совсем понимал эту тему, пересмотрел несколько видосов, но именно после твоего прозрел) Спасибо!

stolenhen
Автор

пересмотрел все что можно, реально разобрался только после твоего урока. Спасибо отлично объяснил✌️👍👍

АлександрБрут-мг
Автор

Супер, спасибо! Все варианты поведения рассмотрели, хоть понятие появилось как это правильно использовать

ruslanfilistovich
Автор

очень доходчиво и интересно!! спасибо!!

anastasia-a.v.
Автор

Добрый день.При определении ассоциативного значения другим энумом. Не определяется тип. Как исправить это?

Катя-збя
Автор

Добрый друг, у меня получилось только так сделать.. Можешь пожалуйста показать мои ошибки или пример как нужно правильно сделать дз, зарание, спасибо)


enum Auto {
case mercedes(color: Color, speed: Speed)
case audi(color: Color, speed: Speed)
case bmw(color: Color, speed: Speed)
case skoda(color: Color, speed: Speed)

enum Color: String {
case mercedesColor = "Black"
case audiColor = "White"
case bmwColor = "Red"
case skodaColor = "Blue"
}

enum Speed: Double {
case mercedesSpeed = 250.0
case audiSpeed = 260.0
case bmwSpeed = 240.0
case skodaSpeed = 230.0
}
}


let mercedes = Auto.mercedes(color: .mercedesColor, speed: .mercedesSpeed)
let audi = Auto.audi(color: .audiColor, speed: .audiSpeed)
let bmw = Auto.bmw(color: .bmwColor, speed: .bmwSpeed)
let skoda = Auto.skoda(color: .skodaColor, speed: .skodaSpeed)


let arrayAutos = [mercedes, audi, bmw, skoda]


func methodAutos(autos: [Auto]) {
switch mercedes {
case .mercedes(let color, let speed):
print(color.rawValue)
print(speed.rawValue)
case .audi(let color, let speed):
print(color.rawValue)
print(speed.rawValue)
case .bmw(let color, let speed):
print(color.rawValue)
print(speed.rawValue)
case .skoda(let color, let speed):
print(color.rawValue)
print(speed.rawValue)
}
}


methodAutos(autos: arrayAutos)

ryixmry
Автор

enum car {

    case bmw (color: Color, maxSpeed: Speed )

    case mersedes (color: Color, maxSpeed: Speed )

    case audi (color: Color, maxSpeed: Speed )

    case lanos (color: Color, maxSpeed: Speed )



    enum Color: String {

        case bmwColor = "yellow"

        case mersedesColor = "blue"

        case audiColor = "green"

        case lanosColor = "red"

    }

        enum Speed: Int {

            case bmwSpeed = 180

            case mersedesSpeed = 220

            case audiSpeed = 240

            case lanosSpeed = 160

        }

    }



let Bmw = car.bmw(color: .bmwColor, maxSpeed: .bmwSpeed)

let Mersedes = car.mersedes(color: .mersedesColor, maxSpeed: .mersedesSpeed)

let Audi = car.audi(color: .audiColor, maxSpeed: .audiSpeed)

let Lanos = car.lanos(color: .lanosColor, maxSpeed: .lanosSpeed)



var arrayAutos = [Bmw, Mersedes, Audi, Lanos]



func methodAutos(autos: [car]) {

    switch Bmw {

    case .bmw(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .mersedes(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .audi(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .lanos(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    }

}

methodAutos(autos: arrayAutos)



func methodAutos2(autos: [car]) {

    switch Mersedes {

    case .bmw(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .mersedes(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .audi(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .lanos(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    }

}

methodAutos2(autos: arrayAutos)



func methodAutos3(autos: [car]) {

    switch Audi {

    case .bmw(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .mersedes(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .audi(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .lanos(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    }

}

methodAutos3(autos: arrayAutos)



func methodAutos4(autos: [car]) {

    switch Lanos {

    case .bmw(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .mersedes(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .audi(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    case .lanos(let color, let speed):

        print(color.rawValue)

        print(speed.rawValue)

    }

}

methodAutos4(autos: arrayAutos)





помогите пожалуйста, как сделать правильно дз?:)

bangin
Автор

Захотелось вывести название авто кроме цвета и размера, выяснилось что такой enum не конвертируется в сроку как enum без ассоциативных значений. Пришлось использовать некоторую магию чтобы взять название в этом случае:

enum Car {
case BMW(kind: Kind, color: Color, maxSpeed: Int)
case MercedesBenz(kind: Kind, color: Color, maxSpeed: Int)
case Ford(kind: Kind, color: Color, maxSpeed: Int)
case GM(kind: Kind, color: Color, maxSpeed: Int)
case Honda(kind: Kind, color: Color, maxSpeed: Int)
case Hyundai(kind: Kind, color: Color, maxSpeed: Int)
case Mazda(kind: Kind, color: Color, maxSpeed: Int)
case Cheroki

var label:String {
let mirror = Mirror(reflecting: self).children.first?.label
return mirror ?? String(describing: self)
}
}

let car1: Car? = Car.BMW(kind: .coupe, color: .Gray, maxSpeed: 150)
car1?.label

let car2 = Car.Cheroki
print(car2.label)

Теперь label будет иметь значение в любом случае. rawValue и enum с ассоциативными данными быть не может

aliday
Автор

пересмотрел все что можно, реально разобрался только после твоего урока. Спасибо отлично объяснил✌️👍👍

АлександрБрут-мг
Автор

пересмотрел все что можно, реально разобрался только после твоего урока. Спасибо отлично объяснил✌️👍👍

АлександрБрут-мг