我有一个类,我希望类的成员变量是lambda函数类型。这个lambda将在该类的一个函数中设置。
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 :(得分:0)
这是正确的语法
var onCollectionViewItemSelected:(i:Int)->Void = {(i:Int) in}
答案 1 :(得分: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)
}
}