> On Dec 26, 2016, at 2:55 PM, Dave Abrahams via swift-evolution > <swift-evolution@swift.org> wrote: > > > on Mon Dec 26 2016, thislooksfun <swift-evolution@swift.org > <mailto:swift-evolution@swift.org>> wrote: > >> Hello Swifters, >> >> I've been writing a lot more Swift code recently, and I have found >> that the default placement of the 'throws' declaration is often >> confusing, especially to those of us switching from languages where >> the type of errors thrown is explicitly defined (like Java) >> >> For example, >> // This is pretty clear, this can throw an error >> func foo() throws >> { ... } >> >> // Also pretty clear, this returns a String >> func bar() -> String >> { ... } >> >> // Confusing. Does this throw a String? Does it return a String? Does it do >> both? >> // I personally keep reading this as 'this can throw a String' >> func baz() throws -> String >> >> // Equivalent code in Java (not a model, just for clarification of why the >> above is confusing) >> String baz() throws StringFormatException >> I therefore suggest either tweaking the syntax around, or moving, the >> `throws` keyword to avoid this confusion. >> >> Some ideas I've had: >> // Add a comma to separate them >> func baz() throws, -> String >> >> // Move `throws` to the end >> func baz() -> String throws > > I agree that reads much better.
func baz() -> (String | throws) func baz() -> (String | throws: BazError) let x: (_ a: Int) -> (throws | (_ b: Float) -> (throws | Double)) Now where getting somewhere. Somewhere weird, to be sureā¦ but somewhere. > >> // Change it to a prefix modifier (like `mutating`) >> throwing func baz() -> String >> I'm still not sold on any of the above syntaxes, but I would love to hear >> your feedback. >> >> This would affect existing code, but it would be a fairly small change >> that would result in very large readability improvements, especially >> for newcomers, and especially for those coming for a language such as >> Java. >> >> -thislooksfun (tlf) >> >> _______________________________________________ >> swift-evolution mailing list >> swift-evolution@swift.org >> https://lists.swift.org/mailman/listinfo/swift-evolution >> > > -- > -Dave > > _______________________________________________ > swift-evolution mailing list > swift-evolution@swift.org <mailto:swift-evolution@swift.org> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution