Multiple return points in scala closure/anonymous function

Posted by Debilski on Stack Overflow See other posts from Stack Overflow or by Debilski
Published on 2010-05-24T17:27:05Z Indexed on 2010/05/24 17:31 UTC
Read the original article Hit count: 343

As far as I understand it, there is no way in Scala to have multiple return points in an anonymous function, i.e.

someList.map((i) => {
    if (i%2 == 0) return i // the early return allows me to avoid the else clause
    doMoreStuffAndReturnSomething(i)
})

raises an error: return outside method definition. (And if it weren’t to raise that, the code would not work as I’d like it to work.)

One workaround I could thing of would be the following

someList.map({
    def f(i: Int):Int = {
        if (i%2 == 0) return i
        doMoreStuffAndReturnSomething(i)
    }
    f
})

however, I’d like to know if there is another ‘accepted’ way of doing this. Maybe a possibility to go without a name for the inner function?

(A use case would be to emulate some valued continue construct inside the loop.)

© Stack Overflow or respective owner

Related posts about scala

Related posts about closures