блок, следующий после 'let' не закончен Требуется заявление - PullRequest
2 голосов
/ 18 февраля 2012

Прежде всего я хочу указать, что я мог бы перевести сообщение об ошибке неверным способом ... О чем эта ошибка?Как мне написать свой код?

    [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

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

Я не могу сказать, что должен делать ваш код, потому что он имеет внешние зависимости, но, как минимум, ваша проблема заключается в отступе: пробел в 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 ... Вы имеете в виду handle или recieveData как функции? Если это так, возможно, вы намеревались что-то более похожее * 1009

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
1 голос
/ 18 февраля 2012
[<EntryPoint>]
let Main (args : string[]) =
    let start = startServer args.[0]
    Console.Read()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...