在f#中将seq <int>指定为返回类型

时间:2016-04-07 14:34:20

标签: f#

我想创建一个带字符串并返回一系列数字的函数。如果它传递一个空字符串,它应该返回一个只包含0的序列。我尝试了以下操作:

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.

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:2)

您的序列表达式需要使用yield来产生一个值:

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