A sensible solution, IMO. Error with Fix-It when attempting to convert implicitly between tuples with mismatched labels.
On Mon, May 9, 2016 at 01:47 Jacob Bandes-Storch via swift-evolution < [email protected]> wrote: > There was some previous discussion under "[Discussion] Enforce argument > labels on tuples > <http://thread.gmane.org/gmane.comp.lang.swift.evolution/14910>". > > Halfway through the thread, Haravikk clearly stated the key point: > > On Thu, Apr 21, 2016 at 12:14 AM, Haravikk via swift-evolution < > [email protected]> wrote: > >> I think the important thing to remember is that the label check is >> intended to prevent cases like this: >> let a:(left:Int, right:Int) = (1, 2) >> var b:(right:Int, left:Int) = a >> While the two tuples are compatible by type, the meaning of the values >> may differ due to the different labels; in this case the values are >> represented in a different order that a developer should have to explicitly >> reverse to ensure they aren’t making a mistake, or they could represent >> radically different concepts altogether. > > > > I agree there's a potential for confusion here, and I suggest we should > add an error (or warning) imploring the user to make the conversion > explicit, when the source tuple is labeled: > > func foo() -> (left: Int, right: Int) { return (3, 4) } > > let (left: a, right: b) = foo() // ok, labels match > > var x = 0, y = 0 > (left: x, right: y) = (1, 3) // ok, source is unlabeled > > let (c, d) = foo() > // error: conversion between tuple types '(left: Int, right: Int)' and > '(Int, Int)' requires explicit 'as' operator > // suggested fix: "let (c, d) = foo() as (Int, Int)" > > let (right: e, left: f) = foo() > // error: conversion between tuple types '(left: Int, right: Int)' and > '(right: Int, left: Int)' requires explicit 'as' operator > // suggested fix: "let (right: e, left: f) = foo() as (right: Int, > left: Int)" > > > Thoughts? > > Jacob > _______________________________________________ > 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
