행위

스칼라

DB CAFE

thumb_up 추천메뉴 바로가기


1 스칼라[편집]

1.1 스칼라 개요[편집]

1.2 스칼라 설치[편집]

1.2.1 JDK 설치[편집]

1.2.2 IDE 설치[편집]

  1. 이클립스
    1. 이클립스는 마켓플레이스에서 스칼라 IDE를 설치하면 스칼라 프로젝트 생성
    2. Help -> Eclipse Marketplace... 를 선택하고, scala ide 를 검색, 설치
  2. IntelliJ
    1. IntelliJ 커뮤니티 버전을 처음 설치할 때, scala를 사용하도록 체크
    2. 기존에 설치된 IntelliJ에 스칼라 플러그인을 설치는 Preference -> Plugins를 선택하고, scala를 검색하여 설치
    3. 플러그인 설치후 재시작하면 프로젝트 생성에서 스칼라를 선택
    4. File -> New.. -> Project를 선택하고, 빌드 툴 선택. scala의 기본 빌드 툴인 sbt를 이용하는 것을 추천

1.3 함수형 프로그래밍[편집]

1.3.1 함수형 언어[편집]

  • 함수형 언어는 함수형 프로그래밍의 패러다임을 따르는 프로그래밍 언어.
  • LISP, Clojure, Erlang 등이 있고, 최근에는 함수형 언어가 아닌 C#, Java같은 객체지향언어에서도 람다 함수의 도입을 통해 함수형 프로그래밍을 지원

1.3.2 함수형 프로그래밍[편집]

  • 함수형 프로그래밍은 프로그래밍 패러다임의 하나로 자료 처리를 수학적 함수의 계산으로 취급하고 상태 변화와 가변 데이터를 피하는 것
  • 순수 함수와 보조 함수의 조합을 이용해서 로직 내에 존재하는 조건문과 반복문을 제거하여 복잡성을 없애고, 변수의 사용을 억제하여 상태 변경을 피하고자 하는 패러다임* 조건문과 반복문은 로직의 흐름을 이해하기 어렵게 하여 가독성을 해치고, 변수의 값은 누군가에 의해 언제든지 변경 될 수 있어 오류 발생의 근본 원인이 될 수 있기 때문
  • 함수형 프로그래밍은 함수형 언어가 제공하는 다음의 특징을 이용
1.3.2.1 순수 함수(pure function)[편집]
  • 함수의 실행이 외부에 영향을 끼치지 않는 함수.
    외부에 영향을 미치지 않기 때문에 스레드-세이프하고, 병렬 계산이 가능
  • 예시) add 함수
public int add(int a, int b) {
  return a + b;
}
1.3.2.2 익명 함수(anonymous function)[편집]
  • 전통적인 명령형 언어는 함수에 이름이 있어야 함.
  • 함수형 언어는 선언부가 없는 익명 함수를 생성하여 코드 길이를 줄이고, 프로그래밍 로직에 집중
  • 예시) reduce 함수 - 입력값으로 익명 함수를 제공하여 값을 처리
Arrays.asList(1,2,3).stream().reduce((a,b)-> a-b).get();
1.3.2.3 고차함수(higher-order function)[편집]
  • 함수를 인수로 취하는 함수
  • 함수를 입력 파라미터나 출력 값으로 처리
  • 예시
Collections.sort(new ArrayList<Integer>(), (x, y) -> x >= y ? -1 : 1);

1.3.3 스칼라 웹 REPL[편집]

https://scastie.scala-lang.org/

  • Scasite는 웹브라우저에서 사용할 수 있는 스칼라 REPL 콘솔.
  • 스칼라의 버전을 선택하여 사용할 수 있기 때문에 스칼라를 설치하기 어려운 환경이라면 이 사이트를 이용하여 기본 문법 공부

1.3.4 IDE 스칼라 워크시트[편집]

  • 스칼라 IDE는 워크시트 제공
  • 워크시트는 REPL 쉘과 유사하게 사용자의 입력을 바로 보여줌
  • 워크시트를 이용하면 따로 실행하지 않아도 변수의 데이터와 처리 과정을 바로 확인할 수 있기 때문에 테스트에 유용
  • REPL 쉘 처럼 한줄 한줄 입력하지 않고 코드를 작성하는 것처럼 표현하면서 데이터를 확인할 수 있기 때문에 효율적 임.

1.4 Hello World[편집]

  1. 스칼라는 자바와 동일하게 프로그램을 실행을 위한 main() 함수 구현
  2. main()함수를 구현 하는 방법 두가지
    1. 싱글톤 객체(object)가 main 함수를 구현하는 방법
    2. 싱글톤 객체(object)가 App 트레잇을 상속하는 방법
      1. App 트레잇이 내부적으로 main() 함수를 구현해 주기 때문에, 첫번째 방법과 동작 방식의 차이는 없습니다.
  3. 상황에 따라 개발하기 편한 방법을 선택

1.4.1 def main() 함수 구현[편집]

// main 함수를 생성App 을 상속하여 실행하는 방법 
object S01_HelloWorldObject {
  def main(args: Array[String]): Unit = {
    println("Hello World main")
  }
}

1.4.2 App 트레잇 상속[편집]

  1. App 트레잇을 상속하는 방법은 extends로 App 트레잇을 상속
  2. 실행하고자 하는 코드를 작성하면 순차적으로 실행 됨.
object S01_HelloWorld extends App {
  println("Hello World")
}

1.5 자료형[편집]

1.6 기본타입[편집]

1.7 문자열[편집]

1.8 변수, 상수[편집]

1.9 함수[편집]

1.10 클래스[편집]

1.11 트레잇[편집]

1.12 싱글톤 객체[편집]