Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Implement nested loop with condition in Scala

Tags:

java

scala

What is an idiomatic way to implement the following code in Scala?

for (int i = 1; i < 10; i+=2) {
  // i = 1, 3, 5, 7, 9
  bool intercept = false;

  for (int j = 1; j < 10; j+=3) {
    // j = 1, 4, 7
    if (i==j) intercept = true
  }

  if (!intercept) {
    System.out.println("no intercept")
  }
}
like image 275
Howard Avatar asked Dec 15 '22 17:12

Howard


1 Answers

You can use Range and friends:

if (((1 until 10 by 2) intersect (1 until 10 by 3)).isEmpty)
  System.out.println("no intercept")

This doesn't involve a nested loop (which you refer to in the title), but it is a much more idiomatic way to get the same result in Scala.

Edit: As Rex Kerr points out, the version above doesn't print the message each time, but the following does:

(1 until 10 by 2) filterNot (1 until 10 by 3 contains _) foreach (
   _ => println("no intercept")
)
like image 56
Travis Brown Avatar answered Jan 01 '23 06:01

Travis Brown