首页 > 解决方案 > 将 List.AddRange 与 F# 列表一起使用的语法是什么?

问题描述

假设我有:

let mutableList = List<string>()
let someList    = [ "a"; "b"; "c" ]

我怎么能做这样的事情:

mutableList.AddRange(someList)

当我需要根据一些动态标准将元素添加到列表中并且元素作为列表到达时,我有一个案例。我知道我可以遍历我的列表并一个一个地添加它们,但我很好奇是否有一种快速/干净的语法可以使不可变列表与 AddRange 一起使用?

标签: f#

解决方案


我不确定我是否正确理解了您的问题。您的代码片段中使用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] ]

推荐阅读