f# - 将 List.AddRange 与 F# 列表一起使用的语法是什么?
问题描述
假设我有:
let mutableList = List<string>()
let someList = [ "a"; "b"; "c" ]
我怎么能做这样的事情:
mutableList.AddRange(someList)
当我需要根据一些动态标准将元素添加到列表中并且元素作为列表到达时,我有一个案例。我知道我可以遍历我的列表并一个一个地添加它们,但我很好奇是否有一种快速/干净的语法可以使不可变列表与 AddRange 一起使用?
解决方案
我不确定我是否正确理解了您的问题。您的代码片段中使用AddRange
的代码工作正常(如果您打开System.Collections.Generic
命名空间)。
我可能会使用ResizeList<string>
而不是List<string>
,但这只是为类型名称使用 F# 别名,这更容易理解并且不需要额外的命名空间。
如果您要问如何以有点像 using 的方式构造不可变列表AddRange
,那么我的建议是查看列表推导。
假设我们有以下使用可变列表的(完全没有意义的)代码:
let l = ResizeArray<string>()
for x in 0 .. 10 do
if x % 7 = 0 then
l.AddRange(["hey"; string x])
要使用不可变列表执行相同的操作,您可以编写:
let l =
[ for x in 0 .. 10 do
if x % 7 = 0 then
yield! ["hey"; string x] ]
推荐阅读
- python - Python将SQL查询的输出保存到Excel
- markdown - 在 Jekyll 中用括号和特殊字符链接
- php - PHP7 未定义的类常量触发 php7:notice
- sql-server - 将参数传递给嵌套过程或创建临时表并检查表是否存在
- angular - 如何为 Angular CLI 设置 bazel 选项 --output_user_root
- amazon-web-services - 有没有办法通过 API Gateway 发送大文件?
- javascript - 方法中的 JavaScript 事件侦听器
- r - 我在 RI 中收到警告消息不理解
- php - Xdebug 让 PHP 太慢了
- flutter - Flutter Web 时通道溢出