[swift-evolution] [swift-evolution-announce] [Accepted] SE-0140: Bridge Optional As Its Payload Or NSNull

Douglas Gregor dgregor at apple.com
Wed Sep 14 09:44:36 CDT 2016


> On Sep 12, 2016, at 4:48 PM, Greg Parker via swift-evolution <swift-evolution at swift.org> wrote:
> 
> 
>> On Sep 12, 2016, at 3:39 PM, Douglas Gregor <dgregor at apple.com <mailto:dgregor at apple.com>> wrote:
>> 
>> As an amendment to SE-0140, Swift will produce a warning when an optional value is converted to a value of type Any, e.g.,
>> 
>> 	MyClass().doSomething(stringOpt)  // warning: optional value of type ‘String?’ is converted to an ‘Any’
>> 					  // note: use ‘!’ to force-unwrap the optional
>> 					  // note: use ‘??’ to provide a default value if the optional is nil
>> 					  // note: use ‘as Any’ to silence this warning
>> 
>> Such a warning will address most accidental injections of optional values into Any, and the core team felt that this addresses accidental boxing of optional values better than leaving the opaque object types to fail fast in Objective-C code that inspects them (e.g., see this message <https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160905/026961.html> for a negative review partly on these grounds).
> 
> Is there a recommended pattern for defining a callee that actually wants to accept anything including optionals with no warning for the caller? 


One could write it as a generic function:

	func identity<T>(_ value: T) -> T { … }


	- Doug
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160914/f6ffef52/attachment.html>


More information about the swift-evolution mailing list