> On Jan 6, 2016, at 7:16 PM, Don Wills via swift-users <swift-users@swift.org> 
> wrote:
> 
> 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?

Seems like a bug to me. I'd expect overload resolution to favor the (String, 
String) overload over the Any overload even if using an implicitly-unwrapped 
optional like this.

-Joe

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

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

Reply via email to