F#将字符串传递给List

时间:2017-01-24 11:03:45

标签: f# operators parameter-passing

在F#中,您可以通过|>运算符将字符串传递给int,如下所示:

"54" |> int

我想知道是否有办法为这样的列表做到这一点:

"[4;2;3]" |> list

当尝试为列表执行此操作时,错误的是未定义值或构造函数。

也许这根本不可能?

1 个答案:

答案 0 :(得分:5)

int是一个可以将字符串(和其他东西)转换为int的函数。

没有名为list的内置函数。要创建列表,您可以使用列表文字语法:[4;2;3]

如果您需要将"[4;2;3]"之类的字符串解析为int list,那么您就是自己的。你需要编写代码才能做到这一点。例如:

let parseIntList (str:string) =
    let trimmed = str.Trim()
    if not (trimmed.StartsWith "[" && trimmed.EndsWith "]") then failwith "Not a list"
    trimmed.[1 .. trimmed.Length - 2].Split ';'
    |> Array.map int
    |> Array.toList

此功能适用于您的示例,但对于其他有效输入可能会失败。