您将如何在Swift中为Java的“列表”接口建模?

时间:2019-06-16 02:24:10

标签: swift swift-protocols

我试图了解协议在Swift中适合哪些问题,我认为这个问题可以很好地解决这个问题。我们可以看一下Java List接口的子集。

interface List<T> {

    public void add(t: T) 
}

我开始假设这必须是Swift中具有关联类型的协议,但是假设quickly got me into trouble。我还注意到,Swift Array类型不是协议,因此,协议根本不是这里的默认解决方案。

如果您想创建一个仅用于定义接口的基本List类型,然后提供该接口的多个实现,就好像它们是List一样,您将如何在Swift中对其建模?如果答案不是“通过使用具有关联类型的协议”,是否可以通过某种方式改变问题以使答案“肯定是具有关联类型的协议”?

编辑:我将提供一些片段的内容,这些内容不能直接转换为Swift。这看起来像什么?我们无法引用具有关联类型的协议,因此我们无法直接进行翻译。我想问这个应该在Swift中被翻译成什么。

class Inventory<T> {

    private final List<T> remainingItems
    private final List<T> soldItems

    public Inventory(){
        remainingItems = new ArrayList()
        soldItems = new ArrayList()
    }

    public void itemSold(t: T){
        // ...
    }

    public void newItem(t: T){
        // ...
    }
}

0 个答案:

没有答案