F#将字符串传递给列表

F#将字符串传递给列表,f#,operators,parameter-passing,F#,Operators,Parameter Passing,在F#中,您可以通过|>操作符将字符串传递给int,如下所示: "54" |> int "[4;2;3]" |> list 我想知道是否有一种方法可以这样做: "54" |> int "[4;2;3]" |> list 当尝试对列表执行此操作时,会出现未定义值或构造函数的错误 也许这根本不可能?int是一个可以将字符串(和其他东西)转换为int的函数 没有名为list的内置函数。要制作列表,可以使用列表文字语法:[4;2;3] 如果需要将“[4;2;3]”之类的字

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

"54" |> int
"[4;2;3]" |> list
我想知道是否有一种方法可以这样做:

"54" |> int
"[4;2;3]" |> list
当尝试对列表执行此操作时,会出现未定义值或构造函数的错误


也许这根本不可能?

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

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

如果需要将
“[4;2;3]”
之类的字符串解析为
int列表
,那么您就可以自己处理了。您需要编写代码才能做到这一点。例如:

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

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

您认为“[4;2;3]”列表的结果会是什么?常规列表[4;2;3]我可以从中提取元素并与之一起工作假设not be
int是一个可以从字符串构建int的构造函数
?根据
int
的文档,它确实不是一个构造函数,但包装了static
Int32.Parse
(尚未找到源代码位置)这是一个在这里定义的函数:所以“1;2;3”。拆分“;”|>Array.map int |>Array.toList将为我提供所需的列表。这对我帮助很大。谢谢