2013-07-19 1 views
1

Кто-нибудь, пожалуйста, помогите мне понять, почему приведенный ниже код дает мне ошибку «Блок, следующий за let, незавершенный. Ожидаемое выражение? Ожидается, что значение x будет строковым списком, и именно так выглядит F #. Итак, почему х не становится списком строк для использования позже в функции?F # |> (Pipeforward) 'block following let is uninished' error

let fxProper (str : string) (values : obj[,]) = 
    let x = 
     values 
     |> Seq.cast<obj> 
     |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
     |> Seq.map string 
     |> Seq.toList 
+3

Функция не может заканчиваться связыванием 'let'. Вы должны вернуть значение из своей функции. – MisterMetaphor

+0

(Это может быть очевидно, но поскольку вы еще не можете связаться с вашими респондентами, я его заброшу ...) 'x' является локальным для' fxProper'. Итак, если вы имеете в виду что-то более глобальное, чем 'fxProper' by 'позже в функции', его нужно будет удалить из области, в которой он находится –

ответ

3

Вам нужно сделать что-то с й значением, которое вы только что установили

let fxProper (str : string) (values : obj[,]) = 
    let x = 
     values 
     |> Seq.cast<obj> 
     |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
     |> Seq.map string 
     |> Seq.toList 
    x 

должен работать.

Это

let fxProper (str : string) (values : obj[,]) = 
      values 
      |> Seq.cast<obj> 
      |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
      |> Seq.map string 
      |> Seq.toList 

должны работать.

1

Вы делаете это правильно. Связывание let для x работает правильно. Ошибка говорит вам, что ваша функция fxProper ничего не возвращает. Если вы хотите вернуть x, то вам нужно добавить его в конце fxProper, как показано ниже, иначе просто добавьте возвращаемое значение фиктивного текста, пока вы не закончите писать свою функцию.

let fxProper (str : string) (values : obj[,]) = 
    let x = 
     values 
     |> Seq.cast<obj> 
     |> Seq.filter (fun x -> not (x :? ExcelEmpty)) 
     |> Seq.map string 
     |> Seq.toList 
    x //this returns the value of x from fxProper, this could also just the default value of whatever you actually want to return here