forked from codeport/scala
-
Notifications
You must be signed in to change notification settings - Fork 0
2장 first steps in scala
TaeHwanLee edited this page Aug 13, 2012
·
7 revisions
- Java의 primitive 타입은
scala package
의 클래스에 대응된다 - 스칼라코드를 Java bytecode로 컴파일할 때 primitive type의 성능이점을 얻을 수 있다면 Java의 primitive type를 사용한다
-
2가지 변수의 종류가 있다
- val : Java의 final과 유사하며 재할당 할 수 없다
- var : Java의 final이 아닌 변수와 유사하면 재할당할 수 있다
-
REPL에서 엔터를 2번입력하면 명령이 종료된다
- 함수 정의는 def로 시작한다
- 재귀함수일 경우는
result type
을 반드시 명시해야 한다 - 함수가 한문장이면 중괄호가 제거가능하다
- Unit타입은 Java의 void 타입과 유사하다
- REPL을 종료할때는
:quit
나:q
를 입력한다
- spets 배열의 첫 값은 steps(0)임(steps[0]이 아님)
- 주석은 // 나 /* */임
- Scala에서 들여쓰기는 스페이스 2칸이 권장된다
- Java의
++i
나i++
는 스칼라에선 동작하지 않는다 - 세미콜론은 옵션이다
- Imperative style
- 한번에 하나의 imperative 커맨드
- loop로 이터레이트한다
- 다른 함수들 사이에 mutate state를 공유한다
- Functional style
- function은 fist-class이다
- 함수리터럴이 하나의 아규먼트를 가지는 한문장으로 이루어졌을때는 이름과 아규먼트를 생략가능하다
args.foreach(println)
- 이걸 partially applied function라고 부른다
-
for (arg <- args)
에서 arg는 val이다
-
REPL말고 코드에서도 재정의는 가능한거 아닌가요?
In the interpreter, however, you can define a new val with a name that was already used before. - p71
-
Lion업데이트 뒤인지 2.9부터인지 REPL이 겁나 느린 느낌인데 저만 그런가요?(오랜만에 해서 그런가.. ㅡㅡ;;)