Я создал некоторые функции с возвращаемым типом Void -> UIImage, и я создал класс FilterApplier для вызова функции по заказу. Идея состоит в том, что каждая функция делает снимок и меняет его. Но когда я добавил первую функцию в массив, она не вернула изображение. Что не так? Написал код на детской площадке, быстро. 7.3.1. Помогите мне пожалуйста: pСоздал массив кортежей для вызова функций, но не может получить возврат
import UIKit
//Sample images initialization
let mous = UIImage(named: "moustache.png")!
let sampleImage = UIImage(named: "sample.png")!
//Moustache Filter
func moustacheMaker() -> UIImage{
let newSize: CGSize = CGSize(width: 75, height: 75)
let top: UIImage = mous
let bottom = sampleImage
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
// Now I draw images to context
bottom.drawInRect(CGRect(origin: CGPoint.zero, size: newSize))
top.drawInRect(CGRect(origin: CGPoint.zero, size: newSize))
// Here I return the new image
let changedImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return changedImage
}
class FilterApplier{
typealias FunctionType = Void -> UIImage
var filters = [(Int, String, FunctionType)]()
func add(funcOrder: Int, funcName: String, function: FunctionType) -> FilterApplier{
filters.append(funcOrder, funcName, function)
return self
}
func runByOrder(){
filters.sort(){
return $0.0 < $1.0
}
for filter in filters{
filter.2
}
}
}
FilterApplier().add(2, funcName: "Moustache", function: moustacheMaker).runByOrder()
К слову: компилятор не действует, как будто есть ошибка. Ничего не происходит: //
'фильтр.2' - это функция. Вам нужно называть это: 'filter.2()'. – vacawama
Что хорошего в том, чтобы запускать функцию фильтра, если вы не вводите какие-либо данные и ничего не делаете с выходом? – vacawama
Действительно - я предполагаю, что это всего лишь пример :) Также Евгений, «funcName», вероятно, не нужен – Fattie