【发布时间】:2015-06-28 13:19:44
【问题描述】:
我有一个闭包问题,该闭包旨在创建,然后在图像的 2D 像素光栅范围内的另一个函数中执行,它基本上应该像这样调用: filter(i,j) 并根据其参数返回一个值。 我认为这段代码应该可以工作,但它抱怨我创建的闭包变量没有初始化。我想这意味着我没有给它参数,但我不会在这个函数中,因为数据在它与图像交互时是已知的。如何设置一个不关心初始化的闭包?
提前谢谢你:)
func processFilter(type:FilterType){
var x = 0
var y = 0
//create cloure
var closure:(i:Int, j:Int)->Int
if(type == FilterType.MyFilter) {
x = 1024
y = 2048
func filter(i:Int, j:Int)->Int {
return i*j*x*y*4096
}
//compiler does not complain here...
closure = filter
}
//other if statements with different closure definitions follow...
//This call throws error: variable used before being initialized
let image = filterImage(closure)
}
【问题讨论】: