on Sun May 28 2017, Gwendal Roué <gwendal.roue-AT-gmail.com> wrote:
>> Le 27 mai 2017 à 19:43, Dave Abrahams via swift-evolution >> <swift-evolution@swift.org> a écrit : >> >> >> on Thu May 25 2017, Gwendal Roué <swift-evolution@swift.org >> <mailto:swift-evolution@swift.org>> > wrote: >> > >>>> Furthermore, this probably comes up most commonly with dictionaries, >>>> since they're a sequence of tuples. The element tuple for >>>> dictionaries has element labels (key: Key, value: Value), so instead >>>> of writing `{ tuple in let (key, value) = tuple; f(key, value) }`, >>>> you could use the implicit argument and write `{ f($0.key, $0.value) >>>> }`. >>>> >>>> -Joe >>> >>> I've migrated a project from Swift 3 to Swift 4 (relevant commit: >>> https://github.com/groue/GRDB.swift/commit/4f26cbcacf7b783c9c503f2909f2eb03ef7930fe) >>> >>> Joe is right, dictionaries, as handy as they are, are particularly >>> affected. But $0 is hardly a >>> panacea. >>> >>> What I regret the most with the change is the lost ability to give >>> *relevant names* to tuple elements (and sometimes with the forced >>> introduction of a phony variable that has no relevant name (like >>> "pair"). >> >> Not saying there's no problem here, but `kv` (or `keyValue` if you must) >> works pretty well for this. At least it isn't purely a reflection of >> the type and gives some hint as to semantics. > > Let me please try to be understood: > > A dictionary is a convenience type, with many many purposes. One > rarely thinks of a dictionary as a "dictionary". It's more often a > "cache", or a "name1 to name2 mapping", as in "name to position > mapping", "lowercase string to case-preserved string mapping", or > whatever you want. > > The "kv", "pair", "key", "value" identifiers are not only irrelevant, > they actively hinder code readability. Compare: > > - ...map { $0.key ... $0.value ... } > - ...map { (name, position) in name ... position ... } I agree with you. As I said, I'm not trying to say there's no problem here. -- -Dave _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution