Scala
[Leaning Scala] Chapter9. 트레이트
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com 트레이트 (trait) 트레이트는 다중 상속을 가능하게 하는 스칼라의 유형 중 하나 입니다. 다른 클래스 유형과 마찬가지로 트레이트는 하나 이상의 클래스를 확장할 수는 없지만 동시에 여러 트레이트를 확장할 수는 있습니다. 트레이트는 직접 인스턴스화가 될 수 없고 클래스 매개변수를 가질 수는 없지만 타입 매개변수를 사용할 수 있어 재사용성이 뛰어납니다. // 트레이..
[Leaning Scala] Chapter9. Object, 케이스 클래스
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com Object 서적에는 객체로 설명되어 있으나 클래스를 통햇 생성되는 객체(instance)와 혼동될 여지가 있어 영어인 Object로 명시 하겠습니다. Object는 하나 이상의 인스턴스를 가질 수 없는 형태의 클래스이며 객체지향적으로 싱글턴(singleton)이라고 합니다. 자바 등 다른 객체지향 언어에서는 정적(static)이거나 전역(global)로 선언할 ..
[Learning Scala] Chapter8. 클래스
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com 이전 포스팅까지는 스칼라의 핵심적인 기능과 사용 방법에 대해 알아봤고 이제 스칼라로 객체지향 개발을 하도록 제공되는 기능들을 알아보려고 합니다. 먼저 가장 기본적인 클래스에 대해 알아보겠습니다. 다만 이번 포스팅은 기존에 자바 등 객체지향 언어에서 클래스를 사용해본 경험이 있다는 전제 하에 설명하려 합니다. 서적에는 스칼라의 클래스에 대한 다양한 내용이 있지만 기..
[Learning Scala] Chapter7. 그 외의 컬렉션 (모나딕 컬렉션)
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com 모나딕 컬렉션(monadic collection) 이란 `Iterable` 연산과 비슷한 변형 연산은 지원하지만 하나 이상의 요소를 포함할 수 없는 컬렉션을 말합니다. Option 컬렉션 크기가 1인 컬렉션이며 값의 존재 여부를 나타내며 `null`의 안전한 처리를 하는데 사용되는 경우가 많습니다. 또한 자바의 `Optional`과 비슷하다고 볼 수 있습니다. 하..
[Learning Scala] Chapter7. 그 외의 컬렉션 (가변, 배열, 시퀀스)
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com 이전 포스팅에서 보편적인 컬렉션인 `List`, `Set`, `Map`에 대해 알아봤습니다. 이 세 컬렉션은 모두 불변의 타입이며 `List`는 순서가 있는 컬렉션이고 `Set`과 `Map`은 순서가 없는 컬렉션 입니다. 위 세 컬렉션을 제외한 다른 컬렉션에 대해 알아보겠습니다. 가변적인 컬렉션 불변의 타입을 가진 컬렉션은 요소를 추가, 변경, 삭제가 불가능하지만..
[Learning Scala] Chapter6. 보편적인 컬렉션 (2)
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com 이전 포스팅에서 기본적인 컬렉션에 대해 알아보았습니다. 이번 포스팅에서는 앞서 공부한 컬렉션들에 대해 조금 더 디테일한 기능에 대해 알아보겠습니다. (`List` 컬렉션을 중점으로 두고 작성하겠습니다.) List에는 무엇이 있는가? List 정의하기 리스트를 정의하는 법은 다양하게 있지만 간단하게 몇가지를 알아보겠습니다. // 빈 리스트 선언 (리스트 타입을 지정..
[Learning Scala] Chapter6. 보편적인 컬렉션 (1)
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com 스칼라는 JVM 기반 언어이므로 기본적으로 자바 컬렉션이 사용이 가능합니다. 하지만 추가적으로 스칼라만의 다양한 고차 연산도 있있습니다. 대부분 `Iterable`의 서브타입이고 컬렉션 데이터를 처리하는 메소드들을 제공합니다. List `List`는 불변의 단방향 연결 리스트입니다. `List`를 가볍게 아래와 같이 사용해 볼 수 입습니다. val list: Li..
[Learning Scala] Chapter5. 일급 함수
이 글은 O'REILLY 러닝스칼라를 기반으로 작성하였습니다. 러닝 스칼라 객체지향 프로그래머를 위한 최적의 스칼라 입문서! 출판사 제이펍 원출판사 O’Reilly 원서명 Learning Scala(원서 ISBN 9781449367930) 저자명 제이슨 스와츠 역자명 김정인, 강성용 출판일 2017년 04월 17일 jpub.tistory.com 일급 함수란? 함수가 선언되고 호출되는 것 외에 다른 데이터 타입처럼 사용될 수 있는 것. 식별자에 할당되지 않고도 리터럴 형태로 생성될 수 있음. 값, 변수 데이터 구조처럼 컨테이너에 저장될 수 있음. 다른 함수의 매개변수로 사용되거나 다른 함수의 반환값으로 사용될 수 있음. (고차 함수: higher-order function) 함수 타입과 값 함수의 타입은 ..