Ios 扩展中的Swift闭包

Ios 扩展中的Swift闭包,ios,swift,closures,extension-methods,Ios,Swift,Closures,Extension Methods,我试图在swift的扩展中使用闭包,但遇到了一点麻烦。我尝试过几种方法,比如尝试将swift中存储的属性与普通闭包结合起来,但似乎我所尝试的一切都给了我一个错误。下面是我迄今为止最好的代码。这段代码中的一个错误是使用了未解析的标识符“self”,但是当我在square func中引用self和Int时,我没有得到这个错误。另一个错误是扩展不能包含存储属性,但我认为它们可以?非常感谢您的帮助,非常好!我希望这对未来的观众有所帮助 extension Int { var timesX: In

我试图在swift的扩展中使用闭包,但遇到了一点麻烦。我尝试过几种方法,比如尝试将swift中存储的属性与普通闭包结合起来,但似乎我所尝试的一切都给了我一个错误。下面是我迄今为止最好的代码。这段代码中的一个错误是使用了未解析的标识符“self”,但是当我在square func中引用self和Int时,我没有得到这个错误。另一个错误是扩展不能包含存储属性,但我认为它们可以?非常感谢您的帮助,非常好!我希望这对未来的观众有所帮助

extension Int {
    var timesX: Int = { (multiplier: Int) -> Int in
            return self * multiplier
    }
    func square() -> Int {
        return self * self
    }
}

您很好地定义了闭包表达式。由于闭包是引用类型,您可以将它们指定给常量或变量(在您的情况下为变量timeX)。但它的类型在这里是错误的

请参阅以下代码:

extension Int {
var timesX = { (multiplier: Int) -> Int in
        return self * multiplier
}
func square() -> Int {
    return self * self
 }
}
var timesX

例如:

let number: Int = 10
number.timeX(3) // result 30
number.timeX(5) // result 50

这应该是您问题的解决方案。

func timesXmultiplier:Int->Int{return self*multiplier}您解决了这个问题吗?
extension Int {
    func timeX(times : Int) -> Int {
        return times * self
    }
    func square() -> Int {
        return self * self
    }
}