Почему функция удовлетворяет требованию броска без броска? - PullRequest
0 голосов
/ 06 декабря 2018
protocol Throwing {
    func x() throws
}


class C : Throwing{
    func x(){
        print("not throwing") // no errors!
    }
}

Почему компилятор не выдает никаких ошибок?Это по замыслу или это ошибка?

1 Ответ

0 голосов
/ 06 декабря 2018

Это по той же причине, по которой это компилируется:

class A {
    func x() throws {}
}
class B:A {
    override func x() {}
}

И это:

func f() {}
func yoho (_ f : () throws -> Void) {}
override func viewDidLoad() {
    yoho(f)
}

И это:

func f() {}
var fun : (() throws -> Void)!
override func viewDidLoad() {
    self.fun = f
}
...