Oh my,
I totally miss this one. The generic one is pretty cool too. You think the `?` shortcut could still make sense? let y: ? = 123 Thanks! Hugues BERNET-ROLLANDE > On Mar 24 2016, at 11:41 am, Andrew Bennett <[email protected]> wrote: > > Hi Huges, > > > > You can achieve a very similar result like this: > > > > let x = 123 > > let y: Optional = x > > > > The generic arguments can be inferred in more complicated cases too, for example: > > > > let z: Set = [1, 2, 3] > > > > Which creates a Set<Int> rather than an Array<Int>. > > > > I hope this helps! > > Andrew Bennett > > > > > > On Thu, Mar 24, 2016 at 9:22 PM, Hugues Bernet-Rollande via swift-evolution <[[email protected]](mailto:[email protected])> 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.s wift>) >> >> >> >> 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 >> >> >> >> \-- >> >> [[email protected]](mailto:[email protected]) >> >> <http://www.xdev.fr> >> >> <http://www.linkedin.com/in/huguesbr> >> >> _______________________________________________ swift-evolution mailing list [[email protected]](mailto:[email protected]) <https://lists.swift.org/mailman/listinfo/swift-evolution> > >
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
