2014-09-18 2 views
3

F #에서 놀고 있었고 이해할 수없는 문제가 있음을 알았습니다. 나는 사용자로부터 정수 입력하는 일련의를 얻을 수 및 배열에 저장 싶은 말 :F # for 루프 오류

[<EntryPoint>] 
let main = 
    let n = Console.ReadLine() |> int 
    let inputVals = Array.zeroCreate n 
    for i in 0 .. n - 1 do 
     inputVals.[i] <- (Console.ReadLine() |> int) 
    printf "%A\n" inputVals 
    0 //compiler error here. The type does not match the expected type 

하지만 오류가에서 오는 것으로 의심되는 주변이 일부 재생 후 오류

This expression was expected to have type string [] -> int but here has type int 

을 제공합니다 for 루프. 하지만 왜 그것이 문자열 [] -> int를 기대하는지 알 수 없습니다. 이것은 매우 간단한 문제인 것처럼 보이지만, 나는 무엇이 계속되고 있는지 알아낼 수 있습니다.

답변

5

여기서 오류는 루프 자체와 관련이 없습니다. main을 값으로 사용하고 있지만 함수이어야하며 배열은 int이어야합니다.

argsstring[]로 추정됩니다
[<EntryPoint>] 
let main args = 
    // Your stuff here 
    0 

. 당신은 자세한 느끼는 경우 , 당신은 그것을 밖으로 철자 수 있습니다 : 다른

[<EntryPoint>] 
let main (args : string[]) = 
    // Your stuff here 
    0 

모든 것이 괜찮습니다.

+0

감사합니다. 이것은 F #이 엔트리 포인트에 입력 인수를 허용하지 않는다는 것을 의미합니까? 기본적으로 F #에서 가능합니다 :'public static void Main()'? – mashrur

+0

@mashrur 당신이 그렇게 할 수 없다고 확신합니다. 진입 점 함수 서명은 ['string [] -> int'] (http://msdn.microsoft.com/en-us/library/dd402151.aspx)이고 그 것입니다 :) –

+4

@mashrur 인수는 항상 거기에 있습니다. 하지만 당신은 물론 그들을 무시할 수 있습니다 :'let main _ = ...' – Tarmil