[swift-evolution] Potential problamatic initializers, solved by removing tuple splat?
dsa.mls at icloud.com
Sun Feb 7 10:47:31 CST 2016
> Le 7 févr. 2016 à 08:45, Jens Persson via swift-evolution <swift-evolution at swift.org> a écrit :
> let tenXs = String(count: 10, repeatedValue: Character("X"))
> let tenYs = String(count: 10, repaetedValue: Character("Y"))
> print(tenXs) // Prints XXXXXXXXXX
> print(tenYs) // Prints (10, "Y")
> So, why doesn't tenYs print the expected YYYYYYYYYY?
> - Because of the slightly misspelled repeatedValues parameter label.
> Then why no compile time error for the misspelled parameter label?
> - Because of this String intializer: public init<T>(_ instance: T)
> I guess there are other similar examples, but I happened to stumble upon this one just now.
> Should they be considered a problem?
> Is this an example of a problem that will be solved by removing tuple splat?
Looks like some kind implicit tuple "unsplating", the reverse of what is mentioned in SE-0029: Removing implicit tuple splat
init<T>(_ instance: T)
let tenYs = sample(count: 10, repaetedValue: Character("Y"))
does display the same (10, "Y").
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the swift-evolution