What is so bad about the global function idea? reflect(_:Any)->String
It’s invoking the reflection APIs, doing a bunch of things you could do yourself with Mirror, and returning a String. I know we don’t have many global functions, but this seems like a reasonable place for one. This isn’t Objective-C; we have namespaces. You can still create another function with that same signature, and refer to the global one with Swift.reflect(). Karl > On 22 May 2016, at 20:19, Dave Abrahams via swift-evolution > <[email protected]> wrote: > > > on Fri May 20 2016, Kevin Ballard <[email protected]> wrote: > >> On Fri, May 20, 2016, at 05:14 PM, Dave Abrahams via swift-evolution wrote: >>> >>> on Fri May 20 2016, Kevin Ballard <[email protected]> wrote: >>> >>>> On Tue, May 17, 2016, at 08:32 PM, Chris Lattner via swift-evolution wrote: >>>>> * What is your evaluation of the proposal? >> >>>> >>>> I'm a little nervous about this change, because converting things to >>>> strings is a fairly basic operation and it should be immediately >>>> obvious how to do that. That said, the described issues are pretty >>>> bad, and I know I've had to carefully triple-check sometimes to make >>>> sure I was calling the right initializer. So I'm +1 on the idea. >>>> >>>> That said, I don't like the name String(printing:). As others have >>>> pointed out, it sounds like this is related to print(), but this >>>> initializer does not actually print anything, it just converts any >>>> value into a string. I also don't like String(describing:) because >>>> it's too long. This initializer should be easier to call than >>>> String(reflecting:). Also, in my experience this initializer is >>>> particularly useful with code of the form `someOpt.map(String.init)`, >>>> and saying `someOpt.map(String.init(describing:))` is annoyingly long. >>>> >>>> Given this, I'd like to suggest the simpler `String(from:)`. It's >>>> short and generic, and it makes sense as it creates a String from any >>>> value. >>> >>> Not too bad. I could live with it. >> >> 😀 >> >>>> I'm also not a fan of Dave's suggestion of removing this initializer >>>> entirely in favor of "\(foo)". This feels weird, and it also can't be >>>> turned into a first-class function value. >>> >>> { "\($0)" } >>> >>> ? >> >> Good point. I think what I intended to express was you cannot refer to >> this operation by name anymore. Maybe not a big deal, but it feels >> weird. > > Makes sense. > > -- > -Dave > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
