- 모든 값이 객체라는 측면에서 순수 객체지향 언어
- 객체의 타입과 행위는 클래스와 트레잇으로 나타난다.
- 다중 상속을 대체하는 유연한 믹스인 기반의 컴포지션 방법을 통해 확장된다.
- 모든 함수가 값이다.
- 익명 함수를 위한 경량 구문을 제공한다.
- 고차 함수를 지원한다.
- 함수의 중첩을 허용한다.
- 커링을 지원한다.
- 대수 타입을 만들 수 있다(케이스 클래스와 케이스 클래스의 패턴 매칭 빌트인 지원을 통해)
- 스칼라는 안전하고 일관성 있는 추상화를 정적으로 강제하는 풍부한 타입 시스템을 장착하고 있다.
- 스칼라 타입 시스템이 지원하는 항목
- 제네릭 클래스
- 가변성 어노테이션
- 상위 타입 경계와 하위 타입 경계
- 객체 멤버로써의 내부 클래스와 추상 타입
- 합성 타입
- 명시적으로 타입이 지정된 자기 참조
- 뷰
- 다형 메소드
- 로컬 타입 추론
- DSL(Domain-Specific Language) 개발이 용이하다.
- 어떤 메소드든 중위나 후위 연산자로 사용될 수 있다.
- 클로저는 기대 타입에 따라 자동으로 생성된다(타입이 대상에 맞춰진다).
- 스칼라는 자바와 닷넷과 상호 호환된다.
- 스칼라는 자바와 같은 컴파일 모델(컴파일 분리, 동적 클래스 로딩)을 사용한다.
- 스칼라 공식 홈페이지 튜토리얼
- Basics
- Unifed Types
- Classes
- Traits
- Class Composition with Mixins
- Higher-order Functions
- Nested Methods
- Currying
- Case Classes
- Pattern Matching
- Singleton Objects
- Regular Expression Patterns
- Extractor Objects
- For Comprehensions
- Generic Classes
- Variances
- Upper Type Bounds
- Lower Type Bounds
- Inner Class
- Abstract Types
- Compound Types
- Self Type
- Implicit Parameters
- implicit Conversions
- Polymorphic Methods
- Local Type Interface
- Operators
- By-name Parameters
- Annotations
- Default Parameter Values
- Names Arguments