나는 f #을 배워서 어리석은 짓을하고 있습니다. 자유롭게 관련 문서를 가리키며 검색했지만 찾지 못했습니다. Windows 7 (.Net 4.0)에서 Visual Studio 2010 베타를 사용하고 있습니다.f #의 들여 쓰기 문제 (vs2010 beta1)
모든 것이 내 첫 번째 f # 프로젝트에서 잘 진행되고 있습니다. 음 .. 거의 모든 것.
let linterp (x:double) (xvalues:double list) (yvalues:double list) =
let num_els = xvalues.Length
if x <= xvalues.Head then
let result = yvalues.Head
elif x >= (List.rev xvalues).Head then
let result = (List.rev yvalues).Head
else for idx in [0 .. num_els] do
if List.nth xvalues idx >= x then
let x0 = xvalues.Item idx
let y0 = yvalues.Item idx
let x1 = xvalues.Item (idx+1)
let y1 = yvalues.Item (idx+1)
let result = y0 + (y1-y0)/(x1-x0)*(x - x0)
result
을 나는 완전히 내 이해를 회피 오류의 시리즈를 수신하고 : 특히 에서 나는 다음과 같은 코드로, 매우 간단한 선형 보간 기능을 쓰고 있어요. 제 1, 제 2, 제 마지막으로 "하자"에 대한
".이 '하자'가능한 올바른 들여 쓰기에 대한 반환 표현의 오류"
이
는 오류 및 경고의 목록입니다.다음
"만약" "불완전한 구조 구조는"가능한 잘못된 압입.이 토큰 위치 (39:10)에서 시작 콘텍스트 오프사이드이다 더욱이 토큰을 압입 또는 표준 포맷 규칙을 사용하여 시도 " 마지막 행 (결과)에 대해 표현식의이 시점 이전에 ".
내가 나에게 알 수없는 어떤 이유로 컴파일러가 첫 번째 목록에 대해 올바르게 추론 할 수 있었다 때문에 유형에 주석을 조금 땀을했다는 것을 추가 할 것입니다,하지만 두 번째의 유형은 항상 추론했다 단위는 또한, 내 원래 버전은 이름 결과를 결합하지 않았다로, 단순히 이것은 "에 대한"에서 오류가 잎에
if x <= xvalues.Head then
yvalues.Head
처럼 또는
else for idx in [0 .. num_els] do
if List.nth xvalues idx >= x then
let x0 = xvalues.Item idx
let y0 = yvalues.Item idx
let x1 = xvalues.Item (idx+1)
let y1 = yvalues.Item (idx+1)
y0 + (y1-y0)/(x1-x0)*(x - x0)
에, "표현을 반환" 말하다 "이 표현식은 유형 단위를 가지지 만 여기서 double 유형과 함께 사용되며"if "가 잘못 들여 쓰기 될 수 있습니다.
나는 이것에 대한 해결책을 보게 될 때 바보가 될 것이라고 생각하지만, 한 시간 이상 간단한 문제에 매달 렸기 때문에 나는 당신의 도움을 요청하고 있습니다.
미리 감사드립니다.
PS : 나는 탭이 올바르게 도구 -> 옵션에 공백으로 해석되는 것을 확인했습니다 -> ... -> F 번호 -> 탭 메뉴
PPS :이 그래서 내 첫 번째 질문입니다 :-)
나는 부끄러워하지만 코드에 분명히 하나씩 오류가있다. :-) 그건 내가 밤늦게까지 코딩하기에는 너무 오래되었음을 증명한다. idx는 x보다 크거나 같은 첫 번째 항목을 나타 내기 때문에'let x0 = xvalues.Item (idx - 1)'및'let x1 = xvalues.Item idx'를 사용합니다. – Francesco