C++ 및 C#과 같이 정적으로 형식이 지정된 많은 언어에는 로컬 변수 유형 유추가 있습니다 (키워드는 각각 auto
및 var
입니다).형식 유추를 반환하는 단점이 있습니까? 그렇다면 무엇입니까?
그러나 나는 컴파일 타임 반환 유형 유추를 구현하는 많은 C 유래 언어 (주석에서 언급 된 것 외에는)를 보지 못했습니다. 나는 질문을하기 전에 "return type inference"가 의미하는 바를 설명 할 것이다. (나는 확실히 는 반환 형식에 의해 과부하를 의미하지 않습니다.)
는 가상의 C# 형 언어로이 코드를 고려해
private auto SomeMethod(int x)
{
return 3 * x;
}
그것은 (인간과 컴파일러에) 명백한 이상하다고 반환 유형은 int
(컴파일러가 확인할 수 있음)입니다.
같은
은 여러 경로에 간다 :private auto YetAnotherMethod(int x)
{
var r = (x == 0) ? 1 : 3 * x;
return r;
}
: 이미 언어는 두 표현식이 호환되는 유형이 있는지 여부를 해결하기 위해 말했다에 알고리즘이 있기 때문에
private auto SomeOtherMethod(int x)
{
if(x == 0) return 1;
else return 3 * x;
}
그것은 전혀 아직도 모호한 알고리즘이 존재하고 이미 어떤 형태로 구현 되었기 때문에 아마도 이런 점에서 기술적 인 문제는 아닙니다. 그러나 여전히 정적 인 유형의 언어에서는 어디에도 보지 못했습니다. 그 언어에 대해 나쁜 점이 있는지 생각하게되었습니다.
내 질문 : 개념으로
- 합니까 반환 형식 유추는 불이익 또는 미묘한 함정은 내가 보이지 않아요했다고? (가독성 외에도 이미 이해하고 있습니다.)
- 정적으로 입력 된 언어에 문제가 있거나 모호한 부분이 있습니까? (으로 나는 지역 변수 형식 유추 이미하지 않는 문제를 말하는 겁니다 "소개".)
D 프로그래밍 언어는 반환 형식 유추를 지원하며 작동합니다 꽤 좋아. –
에릭 리 퍼트 (Eric Lippert)는이 질문에 대답하고 싶습니다.이 주제에 대한 그의 현존하는 답변을 살펴보십시오. –
F #도 있습니다. – Alexan