【问题标题】:Swift Closures Within Extensions扩展中的 Swift 闭包
【发布时间】:2016-08-02 09:55:04
【问题描述】:

我正在尝试在 swift 的扩展中使用闭包,但遇到了一些麻烦。我已经尝试了几件事,比如尝试将存储的属性与正常的闭包结合起来,但似乎我尝试过的一切都给了我一个错误。以下是我迄今为止最好的代码。我在这段代码中遇到的一个错误是“使用了未解析的标识符‘self’”,但是当我在 square() 函数中引用 self(the Int) 时,我没有收到这个错误。另一个错误是“扩展不能包含存储的属性”,但我认为它们可以?非常感谢您的任何帮助都很棒!我希望这对未来的观众有所帮助。

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

【问题讨论】:

  • func timesX(multiplier: Int) -> Int { return self * multiplier }
  • 你解决了吗?

标签: ios swift closures extension-methods


【解决方案1】:
extension Int {
    func timeX(times : Int) -> Int {
        return times * self
    }
    func square() -> Int {
        return self * self
    }
}

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

【讨论】:

    【解决方案2】:

    你很好地定义了闭包表达式。由于闭包是引用类型,您可以将它们分配给常量或变量(在您的情况下,它是变量 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多