在下标returnvalue上调用函数

时间:2017-03-17 10:12:59

标签: swift

我正在试验下标和泛型,我想要做的是:

heap[0]!.hasLeftChild

我的堆类看起来像这样:

public class Heap<T> where T:HeapSubscriptable {

   private var size = Int()
   private var valueList = [T]()
   public var capacity = 3

   // subscript setter
   subscript(i: Int) -> T? {
       if i < self.size {
           return valueList[i]
       } else {
           return nil
       }
   }
   ...
}

为了允许这个我做了一个协议扩展:

public protocol HeapSubscriptable {
    var hasLeftChild: Bool{ get }
}

extension HeapSubscriptable {
     public var hasLeftChild: Bool {
        // return (self.size > 1+i*2 ) // <-- I want to get a hold of this i
    }
}

extension Int : HeapSubscriptable{}

但是为了计算这个,我需要访问下标参数i,这样我就可以在我的数组中使用它的索引并在其上做魔术,看看它是否真的有一个左子。是否可以访问它?

0 个答案:

没有答案