2016-04-19 4 views
0

У меня есть метод протокола, а при его реализации для класса я хочу, чтобы этот метод имел некоторые значения по умолчанию. Но поскольку сам протокол не может иметь значения по умолчанию, я не знаю, как использовать значения по умолчанию.Метод протокола и значения по умолчанию

class Foo: Bar { 
    func addText(text: String, alignment: Int = 0, newLine: Bool = true) { 
     print(text, alignment, newLine) 
    } 
} 

protocol Bar { 
    func addText(text: String, alignment: Int, newLine: Bool) 
} 

let a: Bar = Foo() 
let b: Foo = Foo() 

a.addText("someText") // This results in an error (Missing argument...) 
b.addText("someText") // This works 

Можно ли использовать значения по умолчанию без необходимости бросать класс или перегружать метод вручную?


Edit:
Он работает, когда я добавить расширение к протоколу Bar

extension Bar { 
    func addText(text: String, alignment: Int = 0, newLine: Bool = true) { } 
} 

Является ли это единственный способ?

Скриншот детской площадки:

enter image description here

+0

Я только что разместил ответ. Это способ. Расширения протокола - это новая крутая вещь. – crashoverride777

+0

Но теперь, когда я вызываю метод 'addText', он ничего не печатает. –

+0

Он должен. Когда я копирую код на игровой площадке, я вижу отчет о печати. – crashoverride777

ответ

-1

Это то, что я вижу в детской площадке. Не уверен, что вызывает у вас проблемы.

enter image description here

+0

Точка вопроса - наличие значений параметров по умолчанию в объявлении функции –

Смежные вопросы