协议方法和默认值

时间:2016-04-19 06:59:22

标签: swift protocols

我有一个协议方法,当它实现到类时,我希望这个方法有一些默认值。但由于协议本身不能有默认值,我不知道如何使用默认值。

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

是否可以使用默认值而无需强制转换类或手动重载方法?

编辑:
当我向协议Bar

添加扩展时,它可以正常工作
extension Bar {
    func addText(text: String, alignment: Int = 0, newLine: Bool = true) { }
}

这是唯一的方法吗?

游乐场的截图:

enter image description here

1 个答案:

答案 0 :(得分:-2)

这就是我在操场上看到的。不确定是什么导致了你的问题。

enter image description here