我有一個閉包的問題,它意味着要創建,然後在另一個函數內部在圖像的2D像素柵格範圍內執行基本上這樣調用: filter(i,j)並返回一個基於它的參數的值。 我認爲這個代碼應該可以工作,但它抱怨我創建的閉包變量沒有初始化。我想這意味着我沒有給出它的參數,但是我不會在這個函數內,因爲數據在它與圖像交互時被閉包知道。我如何設置一個不關心初始化的閉包?將Swift中的變量賦值給變量導致'被初始化之前使用的變量'
預先感謝您:)
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)
}
謝謝您的回答!我想將閉包設置爲零,這是編譯器也不接受的默認值,我想阻止默認閉包。然而,使用可選項似乎是一種優雅的方式!變量名稱僅用於上述示例,但確實可能更有意義。 – Kryptographique