I really don't understand optionals.  This code fails with "Call can throw, but 
is not marked with try ..." on the program line:    t1.mth("abc", s1);

class Test {
        private var s1 : String!

        func tst() {
                let t1 : Test1 = Test1()
                t1.mth("abc", s1)
        }
}

class Test1 {
        func mth(p1 : String, _ p2 : String) -> String {
                return p1
        }

        func mth(p1 : String, _ p2 : Any) throws -> String {
                return p1
        }
}

but the program compiles fine if I change the code in either of these two 
manners:

1. I define s1 as non-optional like this:  private var s1 = "", or

2. I remove the second overloaded mth method (the one with "_ p2 : Any" as the 
second parameter and the throws clause)

Swift method lookup obviously chose the second mth func if it exists, but why?

        




_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to