如何在 F# 中连接列表(和其他集合)?
How to concatenate lists (and other collections) in F#?
F# 是否提供惯用的连接方式
- 顺序和列表在一起?
- list和list一起成一个list? (无损)
- list和list一起成一个list是否有破坏性?
- 破坏性地将可变数组组合成另一个可变数组?
你也可以连接元组吗?
sequence and list together
这个没有特殊功能。如果序列是第一个而列表是第二个,那么您必须选择将第一个转换为列表(然后在使用 List.append
附加时复制它)或使用 Seq.append
后跟 List.ofSeq
这将复制两个列表。
所以编写自己的函数是有意义的。
list and list together into a list? (non-destructive)
List.append
这样做。
list and list together into a list if it is destructive
列表是不可变的,因此没有破坏性的追加。
mutable arrays together, destructively, into another mutable array?
在 .NET 中,您不能调整数组的大小,因此没有破坏性的方法可以这样做。 Array.append
创建一个新数组(并且会比其他选项更快,因为它预先知道结果的大小)。
And can you concatenate tuples too?
没有。类型系统不允许您表达将附加元组的函数类型(它们必须具有静态已知大小)。
@运算符是连接多个列表的一种简单而整洁的方法:
let allElements = list1 @ list2 @ list3 @ list4 @ list5 @ list6
F# 是否提供惯用的连接方式
- 顺序和列表在一起?
- list和list一起成一个list? (无损)
- list和list一起成一个list是否有破坏性?
- 破坏性地将可变数组组合成另一个可变数组?
你也可以连接元组吗?
sequence and list together
这个没有特殊功能。如果序列是第一个而列表是第二个,那么您必须选择将第一个转换为列表(然后在使用 List.append
附加时复制它)或使用 Seq.append
后跟 List.ofSeq
这将复制两个列表。
所以编写自己的函数是有意义的。
list and list together into a list? (non-destructive)
List.append
这样做。
list and list together into a list if it is destructive
列表是不可变的,因此没有破坏性的追加。
mutable arrays together, destructively, into another mutable array?
在 .NET 中,您不能调整数组的大小,因此没有破坏性的方法可以这样做。 Array.append
创建一个新数组(并且会比其他选项更快,因为它预先知道结果的大小)。
And can you concatenate tuples too?
没有。类型系统不允许您表达将附加元组的函数类型(它们必须具有静态已知大小)。
@运算符是连接多个列表的一种简单而整洁的方法:
let allElements = list1 @ list2 @ list3 @ list4 @ list5 @ list6