这种参数声明发出什么信号(快速)?

时间:2017-04-07 06:48:23

标签: ios swift xcode

我是一名初学程序员并正在阅读有关iOS编程的书籍。

enter image description here

这是什么意思?它需要一个CGSize参数,然后返回一个CGFloat,然后返回一个UIImage?有什么意义呢?

3 个答案:

答案 0 :(得分:2)

以下声明看起来更具可读性:

func makeRoundedRectangleMaker(_ sz:CGSize) -> ((CGFloat) -> UIImage?) {
    return nil
}

此函数将CGSize作为参数方法,并返回一个闭包,该闭包也可以是该类型的任何函数。 在at this link,您可以阅读更多相关信息。

此外,您可以为闭包创建typealias,因此该函数可能如下所示:

typealias CustomNameOfClosure = (CGFloat) -> (UIImage?)

func makeRoundedRectangleMaker(_ sz:CGSize) -> CustomNameOfClouse {
    return nil
}

希望它可以帮助你:)

答案 1 :(得分:0)

这里你的函数Return(CGFloat) - >的UIImage。

表示你的func makeRoundedRectangleMaker(_ sz:CGSize)返回函数,它有CGFloat数据类型参数并返回UIImage数据类型值

代表

 func makeRoundedRectangleMaker(_ sz:CGSize) -> ((CGFloat) -> UIImage?) {
    return sampleFunc(sz)
}

func sampleFunc(_ input: CGSize) -> Int {
    return UIImage
}

答案 2 :(得分:0)

看一段代码,这个函数的实现应该是这样的

func makeRoundedRectangleMaker(_ sz:CGSize) -> (CGFloat) -> UIImage {

    var tempClosure = {(float:CGFloat) -> UIImage in
        UIGraphicsBeginImageContext(sz)
        let context = UIGraphicsGetCurrentContext()
        context?.setFillColor(UIColor(colorLiteralRed: 0, green: 0, blue: 0, alpha: Float(float)).cgColor)
        context?.fill(CGRect(x: 0, y: 0, width: sz.width, height: sz.height))
        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img ?? UIImage()
    }

    return tempClosure
}

'(_ sz:CGSize)'这是函数的参数,'(CGFloat) - > UIImage的'这是功能的回归,你可以想到'(CGFloat) - > UIImage的'是一个功能,也可以被认为是'(CGFloat) - > UIImage的'是一个闭包,闭包= = swift中的函数