2016-04-07 4 views
0

Я хочу сделать функцию, которая берет строку и возвращает последовательность чисел. Он должен возвращать последовательность, содержащую только 0, если она прошла пустую строку. Я пытался делать следующее:Задать seq <int> как возвращаемый тип в F #

let mapToInt (s: string) :seq<int> = 
    if s.Length = 0 then 
     seq {0} 
    else 
     s.Split ' ' 
     |> Seq.map int 

Это, однако, дает следующее сообщение об ошибке:

This expression should have type 'unit', but has type 'int'. Use 'ignore' to discard the result of the expression, or 'let' to bind the result to a name. 

Что случилось с моим кодом?

ответ

2

Ваше выражение последовательности нужно использовать yield для получения значения:

if s.Length = 0 then 
    seq { yield 0 } 
+0

Это было, я буду принимать это как только смогу. – RusinaRange

+0

Но, я бы, скорее всего, просто 'upcast [| 0 |]', чтобы вернуть массив, преобразованный в последовательность, вместо создания генератора только для того, чтобы вернуть нуль. –

Смежные вопросы