모든 새로운 프로그래밍 언어 또는 최소한 대중화 된 언어는 유형 유추를 사용하는 것으로 보입니다. Javascript조차도 다양한 구현 (Acscript, typescript 등)을 통해 유형과 유형 유추를 얻었습니다. 그것은 나에게 멋져 보이지만 어떤 절충점이 있는지 또는 왜 Java 또는 오래된 좋은 언어에 유형 유추가 없다고 말합니까?
- 유형을 지정하지 않고 (유형이나 : = 구문없이 var를 사용하여) Go 에서 변수를 선언하면 변수 유형이 오른쪽의 값에서 유추됩니다.
- D를 사용하면 동적 언어처럼 유형을 중복 지정하지 않고도 큰 코드 조각을 작성할 수 있습니다. 반면에 정적 추론은 유형과 다른 코드 속성을 추론하여 정적 및 동적 세계를 최대한 활용합니다.
- Rust 의 타입 추론 엔진 은 꽤 똑똑합니다. 초기화하는 동안 r 값의 유형을 보는 것 이상을 수행합니다. 또한 변수가 나중에 유형을 유추하는 데 어떻게 사용되는지 살펴 봅니다.
- Swift 는 형식 유추를 사용하여 적절한 형식을 해결합니다. 형식 유추를 통해 컴파일러는 코드를 컴파일 할 때 제공 한 값을 검사하여 특정 식의 형식을 자동으로 추론 할 수 있습니다.
var
및 C ++와 같은 단방향 auto
)과 형식 추론 (Haskell과 같은 양방향 )을 구분하는 것이 좋습니다 let
. 전자의 경우, 이름의 형식은 자사의 initialiser로부터 추론 할 수있다 가 사용하는 이름의 형식을 따라야합니다. 후자의 경우, 이름의 유형은 그 사용에서도 유추 될 수 있습니다. 이는 []
요소 유형에 관계없이 빈 시퀀스에 대해 간단히 쓸 수 있다는 점에서 유용합니다.newEmptyMVar
참조 자에 관계없이 새로운 널 변경 가능 참조에 유형.
var
.