Skip to content

Instantly share code, notes, and snippets.

@mrbkdad
Last active July 19, 2018 01:48
Show Gist options
  • Save mrbkdad/9cd9de16e48fcabb429a62fb2af23d21 to your computer and use it in GitHub Desktop.
Save mrbkdad/9cd9de16e48fcabb429a62fb2af23d21 to your computer and use it in GitHub Desktop.
learning scala, 스칼라 언어 배우기
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 스칼라 언어 배우기\n",
"\n",
"### 목차\n",
"1. 첫째장 : https://gist.github.com/mrbkdad/16cb82e20121489a6ba79ba8b26c6f7d\n",
" - 1 기본\n",
" - 환경\n",
" - var, val\n",
" - 숫자 타입\n",
" - 연산자와 함수\n",
" - Scaladoc\n",
" - 2 제어 구조와 함수\n",
" - if\n",
" - 블럭\n",
" - for\n",
" - ; 생략 가능 ( java script )\n",
" - Unit : java의 void 와 유사\n",
" - = 없는 함수정의\n",
" - exception, catch 문 pattern matching\n",
"2. 둘째장 : https://gist.github.com/mrbkdad/85f6584ca4d0588ab6bd247b9246641f\n",
" - 3 배열 사용하기\n",
" - 고정길이 Array, 가변길이 ArrayBuffer\n",
" - 초기값과 생성시 new 사용 않음\n",
" - [] (X) -> () (O)\n",
" - for(elem <- arr) 사용\n",
" - for(elem <- arr if ...) ... yield ... : 배열 변환 ( Map ? )\n",
" - 자바와의 호환 : ArrayBuffer, scala.collection.JavaConversion 사용\n",
" - 4 맵과 튜플\n",
" - 맵 : 키/값 쌍의 모음\n",
" - 튜플 : 같은 타입이 아니어도 되는 n개 오브젝트 집합\n",
" - 맵 생성, 쿼리, 방문\n",
" - mutable map, immutable map\n",
" - hashmap : default, treemap 사용 가능\n",
" - 값들을 뭉치기 위한 튜플\n",
" - 값들을 묶어서 처리 하기 위해 zip 메소드 사용\n",
"3. 셋째장 : https://gist.github.com/mrbkdad/5cb32512bec67b603aeee231cc3aa880\n",
" - 5 클래스\n",
" - 클래스의 필드는 자동으로 게터와 세터를 만든다\n",
" - 클래스의 클라이언트를 바꾸지 않고 필드를 맞춤 게터/세터로 교체 할 수 있다.(단일 접근 원칙)\n",
" - 단일접근원칙 : 모듈이 제공하는 모드 서비스는 단일한 표기법으로 접근 가능해야 한다.\n",
" - 저장소로 구현했는지 계산으로 구현했는지를 누설해서는 안된다(Bertrand Meyer)\n",
" - 자바빈 getXxx/SetXxx 메소드를 생성하려면 @Beanproperty 표기법 사용\n",
" - 모든 클래스는 클래스 정의와 \"뒤썩인\" 기본 생성자를 갖고 있다.\n",
" - 기본 생성자의 인자는 클래스 필드가 된다.\n",
" - 기본 생성자는 클래스 바디의 모든 문을 실행한다.\n",
" - 보조 생성자는 선택적이다. 보조 생성자는 this라고 부른다.\n",
"4. 네째장 : https://gist.github.com/mrbkdad/8b3688b6392222b773630ab8f01d7299\n",
" - 6 오브젝트\n",
" - 싱글톤과 유틸리티 메소드를 위해 오브젝트 사용\n",
" - 클래스는 같은 이름의 companion 오브젝트를 가질 수 있음\n",
" - 클래스나 트레이트를 상속 할 수 있음\n",
" - apply 메소드는 보통 companion 클래스의 새 인스턴스를 생성 할 때 사용\n",
" - main 메소드를 피하기 위해 App 트레이트를 상속하는 오브젝트를 사용\n",
" - Enumeration 오브젝트를 확장하여 Enumeration을 구현 가능\n",
"5. 다섯째장 : https://gist.github.com/mrbkdad/2ac5906655a6e9384a368c60352f669f\n",
" - 7 패키지와 임포트\n",
" - 패키지도 중첩 가능\n",
" - 패키지 패스는 절대가 아니다.\n",
" - 패키지 구문에서 x.y.z 체인은 중간 패키지인 x와 x.y를 감춘다.\n",
" - 파일 시작에 나오는 중괄호 없는 패키지문은 전체 파일로 확장된다.\n",
" - 패키지 오브젝트는 함수와 변수를 가질 수 있다.\n",
" - 임포트문은 패키지, 클래스와 오브젝트를 임포트 할 수 있다.\n",
" - 임포트문은 아무 데나 올 수 있다.\n",
" - 임포트문은 멤버 이름을 바꾸거나 숨길 수 있다.\n",
" - java.lang.scala.Predef 는 항상 임포트 된다."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Apache Toree - Scala",
"language": "scala",
"name": "apache_toree_scala"
},
"language_info": {
"file_extension": ".scala",
"name": "scala",
"version": "2.11.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment