누구나 쉽게 스칼라+플레이
-
[스칼라 문법편] CH08 함수 컴비네이터24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 30. 22:13
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛 미디어"를 읽고 정리한 것입니다. CH08 함수 컴비네이터 이번 장에서 배울 함수 컴비네이터는 Java8의 Stream API와 유사합니다. 스칼라의 컬렉션은 대부분 함수 컴비네이터를 제공하여, 컬렉션을 가공 및 조작을 보다 쉽게 해줍니다. 지금부터 배워봅시다. 01. map 먼저 컬렉션 요소마다 변경하고 싶을 경우 map을 사용하면 됩니다. 다음 코드를 살펴보도록 하죠. //main val l = List(1, 2, 3, 4, 5) val n = l.map( i => i * i ) val m = l.map( i => s"ITEM ${i} ") println(n) println(m) n은 원본 l의 각 요소마다 자신을 곱한 요소를 갖는 ..
-
[스칼라 문법편] CH07 컬렉션24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:24
* 이 포스팅은 책 "누구나 쉽게 스칼라+플레이 - 고락윤 한빛 미디어"를 읽고 정리한 것입니다. CH07 컬렉션이번 장은 중요하기도 하고 아니기도 합니다. 책에서는 컬렉션(저는 배열조차 컬렉션으로 넣었습니다.)을 다음과 같이 소개하고 있습니다. "컬렉션은 스칼라에서 빈번하게 사용됩니다. 사실상 프로그램의 성능을 좌우하는 것도 이 컬렉션이 많은 부분을 차지하고 있지요. 프로그램의 전체적인 깔끔함과 설계의 아름다움을 유지하는 것도 컬렉션을 잘 다루어야 가능하기 때문입니다." 컬렉션은 여러 데이터들을 모아 놓은 저장소입니다. 각 데이터마다, 적절한 자료구조가 있는데, 이것이 바로 컬렉션이며, 이들을 잘 알아야 데이터를 효율적으로 관리할 수 있습니다. 이제부터 컬렉션에 대해서 하나 하나 알아가보도록 하죠! 0..
-
[스칼라 문법편] CH06 패턴 매칭24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:19
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH06 패턴 매칭01. 패턴 매칭이란? 기존, Java, C, C++ 유저라면, 3장 제어문 파트에서 한 가지 빼먹었구나라고 생각하실 수 있겠습니다. 바로 switch문 때문인데요, switch 문은 특정 변수의 값에 따라 분기하고 싶을 때 쓰는 제어문이죠. switch(a){ case 1 : /*1 logic*/ break; case 2 : /*2 logic*/ break; default: /*default locgic*/ break; } switch 문은 if/else 구문으로 구성을 달리 할 수 있습니다. 또한, if/else에 비해 조건 처리문을 짜는게 제한적이기 때문에 근래에 들어서는 잘 쓰이..
-
[스칼라 문법편] CH05 FP의 기본! 함수24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:13
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH05 FP의 기본! 함수 이번 장에서는 스칼라에서 중요한 철학 중 하나인 함수형 프로그래밍의 기본 함수에 대해서 알아보고, 추가로 몇 가지 더 알아보도록 하겠습니다. 01. FP의 배경 사실, Functional Programming, FP는 근래에 나온 개념이 아닙니다. 굉장히 오래된 개념 중 하나이지요. 근데 15~16년 이후부터 재조명을 받게 되었을까요? 이유는 컴퓨터의 발전 과정에 있습니다. CPU가 엄청난 속도로 발전하면서, 그 발전의 한계가 점점 드러나고 있지요. 바꿔 말하면 CPU 1개의 성능을 향상시키기 위한 발전의 속도가 떨어졌다는 뜻입니다. 그 결과 우리는 컴퓨터를 더 빠르게 처리하..
-
[스칼라 문법편] CH04 스칼라의 OOP24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:08
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH04 스칼라의 OOP 스칼라에서는 모든 것이 객체입니다. 이는 Java보다 훨씬 객체지향적인 특성을 지닌 말과도 일맥상통합니다. 사실 이전에 말씀드렸던 Akka 라이브러리의 경우 FP보다는 액터 모델을 기반으로 완전한 OOP로써 동시성을 해결하는 라이브러리입니다. 이제부터 우리는 스칼라의 객체 지향 프로그래밍을 지원하는 개념, 키워드들을 알아볼 것입니다. 키워드부터 말씀드리자면, class, object, trait 입니다. 01. class 기존, C++, Java, C# 등 OOP를 지원하는 프로그래밍 언어의 경험이 있다면 이미 이해하고 있을 개념입니다. 책에서는 OOP를 다음과 같이 한 줄로 소..
-
[스칼라 문법편] CH03 조건문과 반복문24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 29. 22:05
* 이 포스팅은 책 "누구나 쉽게 스칼라 + 플레이 - 고락윤 한빛미디어" 를 읽고 정리한 것입니다. CH03 조건문과 반복문01. 조건식 if/else 스칼라의 조건문은 기존 프로그래밍 언어와 동일하게 3단 구조, if ~ else if ~ else 구조입니다. 기본적인 형태는 다음과 같습니다. val x = 15 if (x > 15){ println("x is bigger than 15") } else if (x 15) "bigger" else if "smaller" else "equal" println(s"x is ${res} compared ${x}") res는 15의 조건에 따라 문자열을 나타내는 값이 되없습니다. 이는 스칼라에서는 if/else 등이 평문이 아닌 값으로 평가된다는 것을 의미합니..
-
[스칼라 문법편] CH02 변수 다루기24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 28. 22:16
* 이 포스팅은 책 "누구나 쉽게 스칼라+플레이 - 고락윤 한빛 미디어"를 읽고 필자가 정리한 것입니다. CH02 변수 다루기01. 변수 선언 "컴파일러야 3 보이지? 알아서 맞는 자료형 주고 알아서 메모리 공간 확보해놔. 알아서 해!" 이전 장에서 간략하게 살펴봤던 것처럼 보통 기존의 C, Java 등의 프로그래밍 언어는 자료형을 선언한 후에, 변수 명을 선언해주었습니다. 이렇게 말이죠. int a = 5; final String b = "바뀔 수 없어요."; 스칼라에서는 이렇게 바꿀 수 있습니다. 참고적으로 var 는 바뀔 수 있는 변수를 선언하는 것이고, val은 final 자료형 처럼 바뀔 수 없는 변수를 선언하는 것입니다. var a: Int = 5; val b: String = "바뀔 수 없어..
-
[스칼라 문법편] CH01 스칼라 준비하기24년 11월 이전/레거시-누구나 쉽게 스칼라+플레이 2019. 1. 28. 22:12
* 이 포스팅은 책 "누구나 쉽게 스칼라+플레이 - 고락윤 한빛 미디어"를 읽고 정리한 것입니다. CH01 스칼라 준비하기01. 스칼라에 대해서... 스칼라의 특징은 다음과 같습니다. 코드의 직관성과 신축성이 뛰어나다.스칼라는 기존 자바(여기서 기존 자바는 자바8 이전을 뜻합니다.)와 비교하여, 짧으면서 직관적인 코드 작성을 할 수 있습니다. 예를 들어서, 다음과 같이 사람을 나타내는 Person 클래스가 있다고 가정해봅시다. class Person{ String name; int age; public Person(String name, int age){ this.name = name; this.age = age; } public String getName(){ return name; } public i..