2012-02-18 2 views
2

まず最初に、私は間違った方法でエラーメッセージを翻訳できると指摘したいと思います...このエラーは何ですか?コードをどのように書くべきですか?ブロック、 'let'の後に続くことは終了しません。ステートメントが必要です

[EntryPoint] 
    let Main (args:string[]) = 
      let start = startServer (args.[0]) 
      Console.Read() 

私はコンパイラを幸せにするために何をすべきか理解していません。次のコードスニペットは正しいですか?

let rec handle = 
     let handler = socket.Accept() 
     let rec recieveData = 
      let bytesRec = handler.Receive(bytes) 
      let data = Encoding.ASCII.GetString(bytes,0,bytesRec) 
      Console.WriteLine("Text received : {0}", data) 
     Console.Read() 
    0 

答えて

1

それは外の依存関係を持っているので、私はあなたのコードが行うことになっているものを言うことはできませんが、最低でも、あなたの問題は、インデントです:F#での空白は重要であり、特ににおいて重要な役割を果たしていますレキシカルスコープを決定する。ですから、インデントを修正する必要がまず第、

[EntryPoint] 
let Main (args:string[]) = 
    let start = startServer (args.[0]) 
    Console.Read() 

let rec handle = 
    let handler = socket.Accept() 
    let rec recieveData = 
     let bytesRec = handler.Receive(bytes) 
     let data = Encoding.ASCII.GetString(bytes,0,bytesRec) 
     Console.WriteLine("Text received : {0}", data) 
    Console.Read() 
    0 

のようなものはまた、rec値のあなたの雇用が不要な場合ではない間違って表示されます。そして、handleの体で仕事の束を実行することは奇妙です。0にバインドするための式だけです... handleまたはrecieveDataは機能するのですか?もしそうなら、より多くのものを意図したかもしれません。

let handle socket = //make handle a function with socket an explicit dependency 
    let handler = socket.Accept() 
    let bytesRec = handler.Receive(bytes) 
    let data = Encoding.ASCII.GetString(bytes,0,bytesRec) 
    Console.WriteLine("Text received : {0}", data) 
    Console.Read() |> ignore //probably you are using Read to wait for user interaction to continue, but just ignore the result (returning unit) instead of returning 0 
+0

私はちょうどソケットを使ってサーバを起動しています。あなたの強化のおかげで:) – Sega

1
[<EntryPoint>] 
let Main (args : string[]) = 
    let start = startServer args.[0] 
    Console.Read() 
関連する問題