1. Introduction
In this article, I note how to write 'continue' and 'break' by using Scala in two styles. One is a classic Java style and the other is a elegant style like Japanese calligraphy drawn unicursally. I loved the latter style :)2. Continue and Break in Scala
2.1. Continue
First, I note the 'continue' in Scala. Test data is the simple Map object.・ test data
val data = Map[String, Double]( "libor1M" -> 0.1, "libor3M" -> 0.2, "tibor1M" -> 0.3, "libor6M" -> 0.4)
If you write a progam by using Scala in classic Java stile, it may be the following. It's so redundant and the readability is low and not beautiful.
・ 'continue' in Scala (classic Java style)
val exitBlock = new Breaks()
import exitBlock.{breakable, break}
for (one <- data) {
breakable {
if (!one._1.startsWith("libor")) {
break
}
println(one._1 + ":" + one._2)
}
}
import exitBlock.{breakable, break}
for (one <- data) {
breakable {
if (!one._1.startsWith("libor")) {
break
}
println(one._1 + ":" + one._2)
}
}
But, you can write so simple and elegant code as follows, using Scala. Compared to the above classic Java style, the amount of code is decreased. It's like the beautiful Japanese calligraphy drawn unicursally and so readable :)
・ 'continue' in Scala (elegant style :))
data.withFilter(p => p._1.startsWith("libor")).foreach(f => println(f._1 + ":" + f._2))
The full source code is as follows.
・ full source code
import scala.util.control.Breaks
object test {
def main(args: Array[String])={
val data = Map[String, Double]( "libor1M" -> 0.1, "libor3M" -> 0.2,
"tibor1M" -> 0.3, "libor6M" -> 0.4)
// I don't like the following code. It's not elegant ...
val exitBlock = new Breaks()
import exitBlock.{breakable, break}
for (one <- data) {
breakable {
if (!one._1.startsWith("libor")) {
break
}
println(one._1 + ":" + one._2)
}
}
// I like the following code :)
data.withFilter(p => p._1.startsWith("libor")).foreach(f => println(f._1 + ":" + f._2))
}
}
object test {
def main(args: Array[String])={
val data = Map[String, Double]( "libor1M" -> 0.1, "libor3M" -> 0.2,
"tibor1M" -> 0.3, "libor6M" -> 0.4)
// I don't like the following code. It's not elegant ...
val exitBlock = new Breaks()
import exitBlock.{breakable, break}
for (one <- data) {
breakable {
if (!one._1.startsWith("libor")) {
break
}
println(one._1 + ":" + one._2)
}
}
// I like the following code :)
data.withFilter(p => p._1.startsWith("libor")).foreach(f => println(f._1 + ":" + f._2))
}
}
2.2. Break
Next, I note the 'break' in Scala. Test data is the simple List object.・ test data
val data = List[String]("libor1M", "libor3M", "tibor1M", "libor6M")
If you write a progam by using Scala in classic Java style, it may the following redundant one in common with 'continue'.
・ 'break' in Scala (classic Java style)
val exitBlock = new Breaks()
import exitBlock.{breakable, break}
breakable {
for (one <- data) {
if (one == "tibor1M") {
println(one)
break
}
}
}
import exitBlock.{breakable, break}
breakable {
for (one <- data) {
if (one == "tibor1M") {
println(one)
break
}
}
}
But, as with the case of 'continue', you can write simple and elegant code. It's so readable :)
・ 'break' in Scala (elegant style :))
val result = data.find(p => p == "tibor1M").toString()
println(result)
println(result)
The full source code is as follows.
・full source code
import scala.util.control.Breaks
object test {
def main(args: Array[String])={
val data = List[String]("libor1M", "libor3M", "tibor1M", "libor6M")
// I don't like the following code. It's not elegant ...
val exitBlock = new Breaks()
import exitBlock.{breakable, break}
breakable {
for (one <- data) {
if (one == "tibor1M") {
println(one)
break
}
}
}
// I like the following code :)
val result = data.find(p => p == "tibor1M").toString()
println(result)
}
}
object test {
def main(args: Array[String])={
val data = List[String]("libor1M", "libor3M", "tibor1M", "libor6M")
// I don't like the following code. It's not elegant ...
val exitBlock = new Breaks()
import exitBlock.{breakable, break}
breakable {
for (one <- data) {
if (one == "tibor1M") {
println(one)
break
}
}
}
// I like the following code :)
val result = data.find(p => p == "tibor1M").toString()
println(result)
}
}
3. Conclusion
In Scala, you can write 'continue' and 'break' in the classic Java Style and the beautiful style like Japanese calligraphy drawn unicursally. Writing in the latter style will reduce the amount of code and make the readability so high.