Programming in Sala 책으로 스칼라 스터디하면서 정리했던 내용이다. 지금은 3판 번역본도 나왔지만, 약간 앞서서 스터디를 시작해서 2판으로 진행하고 있다.
5장
기본 타입
- Byte / Short / Int / Long : 8 / 16 / 32 / 64 bits 부호 있는 정수(2의 보수)
- Char : 16 bits 유니코드 문자
- String : Char 시퀀스
- Float / Double : 32 / 64 bits IEEE 754 단정도/배정도 부동소수점 수
- Boolean : true / false
리터럴
정수
- 10진 : 5, 7, ..
- 16진 : 0x5, 0x00FF
- Long : 35L, 31l
부동소수점
- 1.2345
- 1,2345e1
- 123E45
- Float : 1.2345F, 3e5f
- Double(기본) : 3e5D
문자
- 'A'
- '\101'
- '\u0041'
이스케이프 시퀀스(escape sequence)
- \n : 줄바꿈(\u000A)
- \b : 백스페이스(\u0008)
- \t : 탭(\u0009)
- \f : 페이지 넘김(\u000C)
- \r : 줄 맨 앞으로(\u000D)
- " : 큰따옴표(\u0022)
- ' : 작은따옴표(\u0027)
- \ : 역슬래스(\u005C)
문자열
- "hello"
- """Welcome ... """
- stripMargin
println("""|Welcome to Ultamix 3000.
|Type "HELP" for help.""".stripMargin)
심볼
- 작은따옴표 뒤에 오는 식별자(알파벳,숫자) : 'ident
- 'ident -> 내부에서 Symbol("ident") 호출됨
- intern. 같은 심볼 리터럴은 동일한 객체를 참조.
불리언
- true / false
연산자
- 어떤 메소드든지 연산자가 될 수 있음
s.indexOf('o', 5)
s indexOf ('o', 5) // 동일함
- 연산자는 메소드
- 중위 연산자 : 1 + 2 == (1).+(2)
- 전위 연산자 : -2.0 == (2.0).unary_-
- 후위 연산자 : s toLowerCase == s.toLowerCase()
산술 연산자
- +, -, *, /, %
관계, 논리 연산자
-
, <, >=, <=, !
- &&, ||
비트 연산자
- &, |, ^
객체 동일성
- ==, != 사용하여 두 객체가 동일한지 여부를 확인
- null을 포함한 어떤 객체라도 사용 가능
- 내부적으로 null인지 확인하고, null 이 아닌 경우 equals 메소드를 수행함
연산자 우선순위
- 연산자 시작하는 문자에 따라서 아래와 같은 순서로 우선 순위 판단
- (all other special characters)
- */%
- +-
- :
- =! <> &
- ˆ
- |
- (all letters)
- (all assignment operators)
- 메소드가 ':'로 끝나면 오른쪽에서 왼쪽으로 연산되고, 다른 경우는 왼쪽에서 오른쪽으로 연산
리치 래퍼
- 묵시적 변환(implicit conversion)으로 기본 타입에 더 많은 메소드를 실행 가능
0 max 5 // 5
0 min 5 // 0
-2.7 abs // 2.7
-2.7 round // -3L
1.5 isInfinity // false
(1.0/0) isInfinity // true
4 to 6 // Range(4,5,6)
"bob" capitalize // "Bob"
"robert" drop 2 // "bert"
- 위와 같은 메소드는 다음과 같은 레퍼 타입에 정의되어 있음
- Byte - scala.runtime.RichByte
- Short - scala.runtime.RichShort
- Int - scala.runtime.RichInt
- Char - scala.runtime.RichChar
- Float - scala.runtime.RichFloat
- Double - scala.runtime.RichDouble
'Developing' 카테고리의 다른 글
Programming in Scala 스터디 정리 - 6장. 함수형 객체 (0) | 2017.06.12 |
---|---|
Programming in Scala 스터디 정리 - 4장. 클래스와 객체 (0) | 2017.06.09 |
Programming in Scala 스터디 정리 - 3장. 스칼라 두 번째 걸음 (0) | 2017.06.08 |