This is just a Scala question really. Use ++

def inc(x:Int, y:Int) = {
  if (condition) {
    for(i <- 0 to 7) yield(x, y+i)
  } else {
    (for(k <- 0 to 24-y) yield(x, y+k)) ++ (for(j<- 0 to y-16) yield(x+1,j))
  }
}

On Fri, Oct 24, 2014 at 8:52 PM, HARIPRIYA AYYALASOMAYAJULA
<aharipriy...@gmail.com> wrote:
> Hello,
>
> My map function will call the following function (inc) which should yield
> multiple values:
>
>
> def inc(x:Int, y:Int)
>  ={
>  if(condition)
>  {
>   for(i <- 0 to 7)  yield(x, y+i)
>  }
>
>  else
>  {
>  for(k <- 0 to 24-y)  yield(x, y+k)
>  for(j<- 0 to y-16) yield(x+1,j)
>
>  }
>  }
>
> The "if" part  works fine, but in the else part , if should return 2 sets of
> values (from the first for loop and then from the second for loop). But,
> only the values from second for loop (within else) are returned by the
> function.
>
> I tried alternative ways but I am unable to make the above function give me
> the expected result.
>
> Can someone help me understand how yield works, and what should be used in
> place of yield to return multiple values when two for loops have to be
> used.(like the test case in within else condition)  - If it was in JAVA or
> C, we could simply store the values in an array or a list and return the
> same but I'm still not clear how it works in Scala/Spark.
>
> Thank you for your time.
>
> --
> Regards,
> Haripriya Ayyalasomayajula
> Graduate Student
> Department of Computer Science
> University of Houston
> Contact : 650-796-7112

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@spark.apache.org
For additional commands, e-mail: user-h...@spark.apache.org

Reply via email to