본문 바로가기

프로그래밍/scala

스칼라 match 표현식, 재귀호출 및 yeild 사용 예제

스칼라 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