Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 这种参数声明信号(swift)是什么?_Ios_Swift_Xcode - Fatal编程技术网

Ios 这种参数声明信号(swift)是什么?

Ios 这种参数声明信号(swift)是什么?,ios,swift,xcode,Ios,Swift,Xcode,我是一名初级程序员,正在读一本关于iOS编程的书 这是什么意思?它接受一个CGSize参数,然后返回一个CGFloat,然后返回一个UIImage?这样做的意义是什么?下面的声明看起来更具可读性: func makeRoundedRectangleMaker(_ sz:CGSize) -> ((CGFloat) -> UIImage?) { return nil } typealias CustomNameOfClosure = (CGFloat) -> (UIIm

我是一名初级程序员,正在读一本关于iOS编程的书


这是什么意思?它接受一个CGSize参数,然后返回一个CGFloat,然后返回一个UIImage?这样做的意义是什么?

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

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

func makeRoundedRectangleMaker(_ sz:CGSize) -> CustomNameOfClouse {
    return nil
}
此函数将
CGSize
作为参数方法,并返回一个闭包,该闭包也可以是任何类型的函数。 在这里你可以阅读更多关于它的信息

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

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

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

希望它能帮助您:)

这里是您的函数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
}

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

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
}

“(z:CGSize)”这是函数的参数,”(CGFloat)->UIImage“这是函数的返回,你可以认为“(CGFloat)->UIImage”是函数,也可以认为“(CGFloat)->UIImage”是闭包,闭包==函数在swift中

这里makeRoundedTectangleMake是返回闭包(自包含的功能块)参见中的“函数类型作为返回类型”不必是闭包;它可以返回任何类型的函数。