[swift-evolution] allowing to specify optionality with type inference

Radosław Pietruszewski radexpl at gmail.com
Thu Mar 31 06:46:46 CDT 2016


Could you give us one or two real-world examples where you’d want to do this?

I really can’t think of a situation where I would want to assign a non-optional to an optional variable. Even if I transform it later such that it might produce nil, it’s desirable to assign it to two different constants:

	let a = String()
	let b = a.thisMightMakeMeNil()

— Radek

> On 24 Mar 2016, at 11:22, Hugues Bernet-Rollande via swift-evolution <swift-evolution at swift.org> wrote:
> 
> In a strongly typed language, such as Swift is, type inference is greatly appreciated as it declutter the instance type definition.
> 
> For example, in the following statement, the compiler easily deduct the type of `aString` by the return type of `String.init()`
> 
> ```
> let aString = String()
> ```
> 
> Optional are generic enum which can contain a value of a generic type or nil (https://github.com/apple/swift/blob/master/stdlib/public/core/Optional.swift)
> 
> Sometime you may want specify that the instance is of type optional in which even if you are a the same time assigning a value to this instance.
> In which case you loose the type inference mechanism and you have to define both (the optionality as well as the type). 
> For example, you may want specify an optional String with a default value.
> 
> ```
> var a:String? = String()
> // or
> var b = String() as String?
> // or
> var c:Optional<String> = String()
> ```
> 
> But the compiler can already infer the variable type from this assignment, it just miss the "optionality" of the variable.
> It would be nice to be able to express this.
> 
> Then for, I propose the following syntax evolution:
> 
> ```
> var a:? = String()
> // and/or (not recommended because more prone to typo and unclear...)
> var a = String() as?
> ```
> 
> This would allow for more synthetic optional declaration.
> 
> I've draft a proposal on my `swift-evolution` fork:
> 	https://github.com/huguesbr/swift-evolution/blob/optionality-type-with-type-inference/proposals/0057-optionality-type-with-type-inference.md
> 
> Let me know what you think.
> 
> 
> Hugues BERNET-ROLLANDE
> 
> --
> hugues at xdev.fr
> http://www.xdev.fr
> 
> http://www.linkedin.com/in/huguesbr
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160331/72754b2a/attachment.html>


More information about the swift-evolution mailing list