I agree this looks better when something is being returned. What would it look like if the function returns nothing but can throw an error?
Brandon > On Jan 9, 2017, at 4:10 AM, Tyler Cloutier via swift-evolution > <[email protected]> wrote: > > >> On Dec 26, 2016, at 2:55 PM, Dave Abrahams via swift-evolution >> <[email protected]> wrote: >> >> >> on Mon Dec 26 2016, thislooksfun <[email protected]> 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 >>> [email protected] >>> https://lists.swift.org/mailman/listinfo/swift-evolution >>> >> >> -- >> -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
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
