Having returns all over the place in the middle of the code already is sloppy 
to my eyes, I prefer to try at all cost to avoid spaghetti like code.  

The downside of Swift not having everything as a function/expression - or at 
least other replacements for them is it tends to encourage spaghetti code like 
the example you are posting.  I also tend to dislike compound/nested if’s where 
possible sometimes breaking stuff down into other functions scooped within 
functions.  

Hence for my example I am going to use the Scala match (which is for pattern 
matching — i.e. more than just a switch) with guards.  _ = match everything / 
def is func.

  def f(input: Integer) : Integer = {
    input match {
      case _ if input > 10 => 10
      case _ if input < 0  => 0
      case _ => input
    }
  }

The downside of Scala is that it rides on top of the jvm and I would prefer 
something that compiled using llvm.   Two things that I would like to see for 
me to be able to replace a jvm solution for server code is clean functional 
code where you did not have to either do let x then return at the end or random 
“returns” in the middle of code and of course a nice jdbc (interface standard 
for SQL databases rather than relying on vendor specific driver code) like 
standard SQL database interface [which is out of scope for evolution].


> On 2015-12-20, at 19:11:09, ilya <[email protected]> wrote:
> 
> -1 on inferred return type and omitting return with func
> 
> Both features are actually available in the language as-is, just not with the 
> func keyword:
> 
> let someInferredFunction = { _ in 5}  // () -> Int
> 
> When teaching Swift we actually teach func + return keywords together, they 
> make it easy to see all possible return paths from a function.
> 
> And we recommend using func instead of a closure when there is a multiline 
> body with control statements. Having implicit return in that case hurts 
> readability.  For example, out of three possible return points within this 
> function only one is not marked with return:
> 
> func f(input: Int) -> Int {
>     if input > 10 { 
>         return 10 
>     }
>     if input < 0 { 
>         return 0 
>     }
>     input
> }
> 
> 
> +1 on omitting return from var {} declaration, those methods look like 
> closures and will often be one-liners.
> 
> 
> On Sun, Dec 20, 2015 at 5:29 AM, Craig Cruden via swift-evolution 
> <[email protected] <mailto:[email protected]>> wrote:
> I looked at the discussion and it looked like they were discussion two things 
> combined.
>    - inferred return type (on function signature) 
>    - and omitting return on the return.
> 
> I agree with Chris on the fact that the function should have the type of 
> return specified on the signature and not inferred since it is useful for API 
> documentation to know that ahead of time on a strongly typed language.
> 
> What is not necessary is actually forcing people to type return “x” on the 
> last line - since “return” is rather redundant and clutter for those people 
> of a functional programming paradigm point of view.
> 
> 
>> On 2015-12-20, at 4:15:15, Stephen Christopher via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> The discussion I was remembering, comment courtesy of Chris: 
>> https://devforums.apple.com/message/1014317#1014317 
>> <https://devforums.apple.com/message/1014317#1014317>
>> 
>> (linked from https://devforums.apple.com/thread/255242 
>> <https://devforums.apple.com/thread/255242>)
>> 
>>  _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution 
>> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 
> 
> _______________________________________________
> swift-evolution mailing list
> [email protected] <mailto:[email protected]>
> https://lists.swift.org/mailman/listinfo/swift-evolution 
> <https://lists.swift.org/mailman/listinfo/swift-evolution>
> 
> 

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to