创建自定义对象F#列表

时间:2017-12-29 14:44:52

标签: ios swift list xamarin f#

我有一个声明如下的自定义对象:

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

我的理解是否正确?

1 个答案:

答案 0 :(得分:4)

F#list(与Swift / C#List不同)是一个不可变的单链表。它更像是F#数据结构,在语言中有更好的支持(模式匹配等),并且因为它是不可变的,所以你可以安全地将它公开或在不同的线程之间共享它。但是,它比许多其他数据结构慢。

Swift / C的F#等效#List(事实上,它与C#List完全相同)被称为ResizeArray,它是一个自动变量大小的可变数组。如果您需要您的集合是可变的,那么它可能就是您想要的数据结构。

根据你想做的事情,两者都是正确的选择。