[swift-users] Overload by return type optionality?

Rick Mann rmann at latencyzero.com
Thu Oct 13 17:27:31 CDT 2016


> On Oct 13, 2016, at 14:47 , Joe Groff <jgroff at apple.com> wrote:
> 
> 
>> On Oct 13, 2016, at 2:36 PM, Rick Mann via swift-users <swift-users at swift.org> wrote:
>> 
>> It seems I can write this:
>> 
>> extension String
>> {
>> public func deleting(prefix inPrefix: String) -> String
>> public func deleting(prefix inPrefix: String) -> String?
>> }
>> 
>> But I was hoping it would do the right thing:
>> 
>> let a = s.deleting(prefix: "foo")
>> if let b = s.deleting(prefix: "foo") { }
>> 
>> But it finds these ambiguous, and I'm not sure how to specify which I want.
> 
> The first one is truly ambiguous since either overload works. If you specify the type of 'a', you should be able to choose one or the other:
> 
> let a: String = s.deleting(prefix: "foo")
> let b: String? = s.deleting(prefix: "foo")
> 
> The `if let` should not be ambiguous, since only the Optional-returning overload is a valid candidate. Got time to file a bug?

Here you go: https://bugs.swift.org/browse/SR-2942


-- 
Rick Mann
rmann at latencyzero.com




More information about the swift-users mailing list