我有一个声明如下的自定义对象:
class Listing : NSObject {
var from : Date?
var to : Date?
var pricePerNight : Int?
....
}
然后我创建一个这样的对象的空列表,如下所示:
var myListings = [Listing]()
我现在正尝试使用F#
创建相同的功能。我已经定义了一个接口如下:
type Listing =
abstract member fromDate : NSDate with get,set
abstract member toDate : NSDate with get,set
abstract member pricePerNight : int with get,set
...
然后我这样做了:
let listings : List<Listing> = List.Empty
我的理解是否正确?
答案 0 :(得分:4)
F#list
(与Swift / C#List
不同)是一个不可变的单链表。它更像是F#数据结构,在语言中有更好的支持(模式匹配等),并且因为它是不可变的,所以你可以安全地将它公开或在不同的线程之间共享它。但是,它比许多其他数据结构慢。
Swift / C的F#等效#List
(事实上,它与C#List
完全相同)被称为ResizeArray
,它是一个自动变量大小的可变数组。如果您需要您的集合是可变的,那么它可能就是您想要的数据结构。
根据你想做的事情,两者都是正确的选择。