Можно ли включить метод в интерполяцию строки? (Swift) - PullRequest
0 голосов
/ 01 октября 2019

Я пытаюсь включить метод commercial() моего класса Cars в интерполяцию строк, выполняемую моим методом finalNegotiation() моего класса PriceNegotiation. Это возможно? Я пытался использовать .commercial(), я также пытался, как вы можете видеть в этом коде, я пытался использовать super.commerical()

class Cars  {
    var make = ""
    var model = ""
    var year = 0

    init(carMake make:String, carModel model:String, carYear year:Int) {
        self.make = make
        self.model = model
        self.year = year
    }
    func commercial() {
        print("This car is a \(year) \(make) \(model)")
    }

}




class PriceNegotation: Cars {
    var price:Double = 0


    init(desiredBuyerPrice price:Double,carMake make:String, carModel model:String, carYear year:Int ) {
        self.price = price

    super.init(carMake: make, carModel: make, carYear: year)


    }

    func finalNegotiation() {
        let dealerPrice = price * 1.5
        print("Since \(super.commercial()) the asking price is \(dealerPrice)")
    }

}

1 Ответ

2 голосов
/ 01 октября 2019

Когда вы вызываете commercial(), он печатает текст и выходит из функции. Чтобы достичь цели, включите в функцию commercial() возвращаемое значение. Вот пример.

class Cars  {
    var make = ""
    var model = ""
    var year = 0

    init(carMake make:String, carModel model:String, carYear year:Int) {
        self.make = make
        self.model = model
        self.year = year
    }

    func commercial()->String {
       return "This car is a \(year) \(make) \(model)"
    }
}
class PriceNegotation: Cars {
    var price:Double = 0

    init(desiredBuyerPrice price:Double,carMake make:String, carModel model:String, carYear year:Int ) {
        self.price = price

        super.init(carMake: make, carModel: make, carYear: year)
    }

    func finalNegotiation() {
        let dealerPrice = price * 1.5
        let commercialOutput = commercial()
        print("Since \(commercialOutput) the asking price is \(dealerPrice)")
    }
}

Это помещает выходные данные функции commercial() a String в другую строку посредством интерполяции. Ранее функция ничего не возвращала, поэтому казалось, что функция не работает. Это, с другой стороны, должно работать. Дайте мне знать, если это не так.

...