2012-02-18 55 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正文中执行了一堆工作,让let表达式仅将它绑定到0 ......你的意思是handlerecieveData是函数吗?如果是这样,也许你打算更像

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 2012-02-18 15:11:49

1
[<EntryPoint>] 
let Main (args : string[]) = 
    let start = startServer args.[0] 
    Console.Read() 
相关问题