ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [스칼라 문법편] CH09 기타 문법
    레거시/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 30. 22:18
    반응형

    * 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛 미디어"를 읽고 정리한 것입니다.

    CH09 기타 문법


    이번 장에서는 스칼라에서 꼭 필요한 문법이나 처음 배울 때는 다소 비중이 떨어지는, 그런 문법들을 공부하려 합니다. 자 바로 시작하죠.

    01. 예외 처리


    예외처리는 언제난 프로그래밍 언어에 있어서 중요한 부분입니다. 특히 자바에선 굉장히 엄격하게 관리되는 것으로 유명하죠. 때문에, 자바의 에외처리 코드는 불필요한 코드들이 많습니다. 스칼라에서도 비슷하지만 case 를 이용하여 보다 편한 try-catch 구문을 제공합니다. 보통 예외 처리 형식은 다음과 같습니다.

    try {
        //예외가 발생할 코드
    } catch {
        case E => //에러 타입 E가 catch될 경우 로직 작성
        //...
    } finally {
        //try catch 이후 실행될 코드
    }


    패턴 매칭과 유사한 형식으로 try-catch 문을 보다 간결하게 표현할 수 있게 되었지만, 그럼에도 불구하고 장황하긴 합니다. 제일 중요한 것은 예외에 대해서 안전하게 코드를 짜는 것이 중요합니다.

    02. 아이더


    Either(아이더) 클래스는 이거 아니면 저거라는 클래스입니다. 2 타입 중 하나를 선택하게 되는 것이죠. 코드를 살펴보시면 이해가 더 쉬울 것입니다.

    //main
    
    val input = scala.io.StdIn.readLine("입력 : ")
    val res: Either[String, Int] = try {
        Right(input.toInt)
    } catch {
        case e: Exception => Left(input)
    }
    
    println(result.getClass)


    이 코드는 먼저 문자열을 입력 받고, 입력 문자열이 숫자로 변환될 수 있으면 Int를 저장하고 아니라면 String을 저장합니다. 만약 입력이 "aa"라면 toInt를 하는 도중 에러가 발생하고 Either의 왼쪽 타입인 String으로 자료형이 변하게 됩니다. 반대로 "11" 등의 숫자로만 이루어진 문자열이라면, 오른쪽 타입인 Int 형으로 변하는 것이죠. Either의 주요 메소드는 다음과 같습니다.

    메소드반환 자료형기능
    isLeft()Boolean왼쪽 자료형이 되었을 때 참을 반환
    isRight()Boolean오른쪽 자료형이 되었을 때 참을 반환


    참고적으로 Either 는 패턴 매칭과 함께 자주 쓰인답니다.

    03. 스칼라 접근 제한자


    스칼라의 접근 제한자는 다음과 같습니다.

    -privateprotected예약어 없음(public)
    동일 클래스(객체)OOO
    상속 클래스XOO
    다른 패키지XOO


    특이한 것은 아무런 예약어를 붙이지 않으면, 모두 public 제한자를 갖는 다는 점입니다.

    04. 마무리하며....


    자 이렇게 해서 책"누구나 쉽게 스칼라 + 플레이"의 1부 문법편을 같이 공부해보았습니다. 스칼라 문법편은 여기서 마치려고 합니다. 스칼라란 언어에 대해서 더 공부하고 싶으시다면 저는 다음의 책들을 추천합니다.

    • 러닝 스칼라
    • Programming In Scala
    • Functional Programming In Scala


    또한 스칼라의 주요 웹 프로그래밍 프레임워크인 플레이 프레임워크를 공부하고 싶다면 다음의 책들을 추천합니다.

    • 누구나 쉽게 스칼라+플레이 2부
    • Play Framework Cookbook
    • Play For Scala


    언어를 배우고 제일 중요한 것은 계속 써보는 것입니다. 이러한 공부들을 바탕으로 프로젝트를 하는 것이 제일 좋습니다. 형님들 다들 즐코하십쇼~!

Designed by Tistory.