2015-03-26 2 views
0

У меня есть класс, и я хочу, чтобы переменная-член класса была типа лямбда-функции. Эта лямбда будет установлена ​​в одну из функций этого класса.Элемент класса Swift, который является лямбдой

class MyCollectionViewController: UIViewController, UICollectionViewDelegateFlowLayout { 

var onCollectionViewItemSelected:{(i:Int)->Void} 


func setLambda(lambda:(i:Int)->Void) { 
    self.onCollectionViewItemSelected = lambda 
} 

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    self.onCollectionViewItemSelected(indexPath.row) 
} 

} 

Это дает ошибки компилятора. Как мне это сделать?

ответ

0

Это был правильный синтаксис

var onCollectionViewItemSelected:(i:Int)->Void = {(i:Int) in} 
0

Существует мало оснований для определения setlambda функции, как вы можете просто использовать присваивание свойству или вычисляемого свойства. Кроме того, как представляется, вы не инициализируете «обратный вызов», который предполагает, что его тип может быть предпочтительным - или нет, с требуемым начальным значением

class MyCollectionViewController: UIViewController, UICollectionViewDelegateFlowLayout { 

    var itemSelectedCallback = { (i:Int) -> Void in return } // type inferred 

    func collectionView(collectionView: UICollectionView, 
     didSelectItemAtIndexPath indexPath: NSIndexPath) { 
    itemSelectedCallback (indexPath.row) 
    } 
}