Как использовать переменную экземпляра для доступа к своему объекту внутри другой переменной и возврата - PullRequest
0 голосов
/ 03 мая 2018

Как использовать переменную экземпляра для доступа к своему объекту внутри другой переменной и возврата

class Tyre {
    let name: String
    var owner: Vehicle?
    init(name: String){
        self.name = name
    }
}

class Vehicle {
    var name: String
    var tyres: [Tyre] = []

    var stringIds = "";
    var tyreNames : () -> String = {
        //        let allTyres = (tyres.map{String($0)}).joined(separator: ",")
        print(tyres) // unable to acess tyres here
        return ""
   }

    init(name: String){
        self.name = name
    }

    func adopt(tyre: Tyre){
        tyres.append(tyre)
        tyre.owner = self
    }
}

var myCar = Vehicle(name: "Honda")
var tyre = Tyre(name: "MRF")
myCar.adopt(tyre: tyre)
tyre = Tyre(name: "CFP")
myCar.adopt(tyre: tyre)
print(myCar.tyreNames())

Невозможно получить доступ к шинам класса транспортного средства для печати всех шин, относящихся к классу транспортного средства:

ошибка: элемент типа "шины" нельзя использовать для типа "Автомобиль"

1 Ответ

0 голосов
/ 03 мая 2018

Вместо замыкания объявляйте tyreNames как вычисляемую переменную

var tyreNames : String {
    return tyres.map{ $0.name }.joined(separator: ", ")
}

и назовите его

print(myCar.tyreNames)
...