on Fri Jul 01 2016, Dmitri Gribenko <[email protected]> wrote:
> On Fri, Jul 1, 2016 at 12:16 PM, Eric Habberstad via swift-evolution > <[email protected]> wrote: >> >> To the Swift community, >> >> May I put forth a couple of new names for the following protocol: >> >> >> - CustomStringConvertible — rename as ‘Descriptive’ or as ‘Revealable’ >> >> >> Two goals for Swift is clarity and joy in use of the language, so I strongly >> feel that ‘Custom-‘ not be part of any new name here since it contributes >> little except verbosity > > Hi Eric, > > This protocol was called Printable before, but it caused a lot of > confusion for developers, and was guiding the developers toward > writing incorrect APIs. We have seen a lot of developers writing code > like this: > > func printAll(_ values: [Printable]) { > for v in values { print(v) } > } > > This code is unnecessarily restrictive since in Swift everything can > be converted into a String. > > func printAll(_ values: [Any]) { > for v in values { print(v) } > } > > The same goes for retrieving debug descriptions and mirrors. Any > value can do that. It is just that some values can opt into > customizing this behavior. > > Thus, we renamed the protocols, adding the Custom~ prefix. Our > intention was to encourage only conformances to these protocols, and > discourage writing APIs against them. In fact, this should be in the “frequently rejected” list. -- Dave _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
