[정리] Scala 정리(4) - 타입 및 다형성 기초
스칼라 학교!을 개인적으로 정리한 것입니다.
스칼라의 타입
타입시스템의 특징
- 매개 변수의 다형성(parametric polymorphism) 또는 제네릭 프로그래밍
- (지역) 타입 추론
- Existential Quantification(?)
- 뷰(view), 어떤 타입에서 다른 타입으로 변화될 수 있는지 여부
매개 변수의 다형성
타입 변수를 지정함으로써 매개 변수의 다형성을 이룬다.
scala> def drop1[A](l: List[A]) = l.tail
// drop1: [A](l: List[A])List[A]
scala> drop1(List(1,2,3))
// res1: List[Int] = List(2, 3)
스칼라는 rank 1 다형성을 지원한다. 너무 일반적인 경우 스칼라 컴파일러가 이해할 수 없는 문장이 있을 수 있다는 뜻이다.
def toList[A](a: A) = List(a) // OK def foo[A, B](f: A => List[A], b: B) = f(b) // NOT OK
잘 몰라서 나중에 알아보자..
댓글남기기