F# 将字符串传递给列表

标签 f# operators parameter-passing

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

"54" |> int

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

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

当尝试对列表执行此操作时,它会出错,即未定义值或构造函数。

也许这根本不可能?

最佳答案

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

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

关于F# 将字符串传递给列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826544/

相关文章:

recursion - F#中的递归记录

f# - 可以对 F# 模块进行猴子修补吗?

c++ - 使用指针 vector 的问题(附代码)C++(以及对其使用便利性的怀疑)

java - 如何避免 Java 中盒装类型算术的 NullPointerExceptions?

javascript - 为事件监听器传递参数

javascript - 如何在react-native中从子组件(带参数)调用父函数?

command-line - 如何通过命令行启动 "Windows Terminal"?

f# - 如何使用现有项目在 F# 中初始化序列?

.net - 如何从 F# 中的数组列表中提取元素?

ruby - "+="(加上等于)是什么意思?