Цикл массива внутри функции

xcode

#1

Здравствуйте, помогите пожалуйста.
Мне нужно создать enum с кейсами разных автомобилей, и ассоциативные значения: цвет (заданный через nested type ) и максимальная скорость. Далее создать массив этих автомобилей и написать функцию принимающую этот массив и с помощью цикла перебрать массив и распечатать в консоль цвет и максимальную скорость каждого автомобиля.
Как сделать правильно?
Заранее спасибо :slight_smile:

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)


#2

может что-то по типу такого

import UIKit

enum Color: String {
    case bmwColor = "yellow"
    case mersedesColor = "blue"
    case audiColor = "green"
    case lanosColor = "red"
}

enum Speed: Int, CaseIterable {
    case bmwSpeed = 180
    case mersedesSpeed = 220
    case audiSpeed = 240
    case lanosSpeed = 160
}

struct Credentials {
    let color: Color
    let speed: Speed
    
    var description: String {
        "SPEED: \(speed.rawValue), color: \(color.rawValue)"
    }
}

enum Car {
	case bmw(Credentials)
    case mersedes(Credentials)
    
    var credentials: Credentials {
        switch self {
        case .bmw(let cr):      return cr
        case .mersedes(let cr): return cr
        }
    }
    
    var description: String {
        return credentials.description
    }
}

func log(_ cars: [Car]) {
    for car in cars {
        print(car.description)
    }
}

let credentials = Speed.allCases.map{ Credentials(color: .bmwColor, speed: $0) }
let cars = credentials.enumerated().map{ $0.offset % 2 == 0 ? Car.bmw($0.element) : .mersedes($0.element) }

log(cars)

#3

спасибо огромное!!! :pray::pray::pray: