I guess I missed that discussion. This "feature" does more harm than good IMHO.
> On Jan 30, 2017, at 10:16 PM, Charlie Monroe via swift-evolution > <swift-evolution@swift.org> wrote: > > >> On Jan 31, 2017, at 1:03 AM, Matthew Johnson via swift-evolution >> <swift-evolution@swift.org> wrote: >> >> >> >> Sent from my iPad >> >>> On Jan 30, 2017, at 5:25 PM, Slava Pestov via swift-evolution >>> <swift-evolution@swift.org> wrote: >>> >>> >>>> On Jan 30, 2017, at 2:58 PM, Daniel Duan via swift-evolution >>>> <swift-evolution@swift.org> wrote: >>>> >>>> Hi all, >>>> >>>> Right now, expressions that evaluates to Optional<()>, >>>> Optional<Optional<()>>… gets special treatment when it’s unused. For >>>> example: >>>> >>>> func f(s: String) {} >>>> let s: String = “” >>>> s.map(f) // no warning here, even tho the resulting type is `Optional<()>` >>>> and unused. >>>> >>>> func g() throws {} >>>> try? g() // no warnings here neither. >>>> >>>> This is convenient, but encourages composing map/filter/reduce, etc with >>>> side-effect-ful functions, which we have found a few cases of in our >>>> production code recently. Granted, these cases could’ve been caught with >>>> more careful code reviews. But we wouldn’t have missed them if this >>>> “feature” didn’t exist. >>>> >>>> I think we should remove the special treatment so that code in the example >>>> above would generate a warning about `()?` being unused. Users can silence >>>> it manually by assigning the result to `_`. >>>> >>>> OTOH, this would undermine the convenience of `try?` when the throwing >>>> function don’t return anything. >>> >>> IMHO, using ‘try?’ to ignore an error result, instead of just turning it >>> into an optional, is an anti-pattern, and forcing users to write ‘_ = try? >>> foo()’ might not be so bad… >> >> +1 > > Isn't this how it was in Swift 2.x and the first versions of 3.0? I believe > this was changed only recently - which I personally found as good news. In > some cases you simply do not care about the error result since it has no > impact if the call fails and typing "_ =" seemed like boilerplate... > > If I recall correctly, this was discussed here on the list and changed to the > current behavior. > > >> >>> >>>> >>>> What do y’all think? >>>> >>>> Daniel Duan >>>> _______________________________________________ >>>> swift-evolution mailing list >>>> swift-evolution@swift.org >>>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> >>> _______________________________________________ >>> swift-evolution mailing list >>> swift-evolution@swift.org >>> https://lists.swift.org/mailman/listinfo/swift-evolution >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution