스칼라 match 표현식 예제
def doMatch(firstArg: String): String = {
firstArg match {
case "salt" => "pepper"
case "chips" => "salsa"
case "eggs" => "bacon"
case _ => "huh?"
} // 반환값을 명시하지 않으려면 함수의 마지막에 선언/할당 구문이 없어야 한다.
}
break와 continue문 없이 살기
// args = -1.scala 1.scala -2.scala 2.scala -abc.c -abc.scala a.c xyz.scala
def doWhileLoop(args: Array[String]) {
var i = 0
while (i < args.length) {
if (!args(i).startsWith("-") && args(i).endsWith(".scala")) println(args(i))
i += 1
}
}
재귀함수를 통해 구현하는 것도 가능
def doRecursion(args: Array[String]) {
def searchFrom(i: Int): Int = {
if (i >= args.length) -1
else {
if (!args(i).startsWith("-") && args(i).endsWith(".scala")) println(args(i))
searchFrom(i+1)
}
} // 스칼라의 경우 이런 함수의 정의 및 사용이 가능함.
searchFrom(0)
}
일반적인 피보나치 수열 출력
def printFibo1(num: Int) {
var pos = if (num < 2) 2 else num
var fibo = new Array[Int](pos)
for (x <- 0 to pos-1) {
if (x < 2) fibo(x) = 1
else {
fibo(x) = fibo(x-2) + fibo(x-1)
}
}
fibo.foreach(x => print(x + ", "))
println
}
for문과 yield를 활용한 피보나치 수열 출력
def printFibo2(num: Int) {
var pos = if (num < 2) 2 else num
var a = 0
var b = 1
var t = 0
val fibo =
for (x <- 0 until pos) yield {
t = a + b
a = b
b = t
a
}
fibo.foreach(x => print(x + ", "))
println
}
'프로그래밍 > scala' 카테고리의 다른 글
Maven + Java + Spark 연동 개발 (0) | 2016.02.04 |
---|---|
스칼라 함수형 객체 (0) | 2016.01.21 |
스칼라의 기본 타입과 연산 (0) | 2016.01.16 |