Swift:将闭包作为类变量中的init参数

我有一些看起来像这样的代码:

class Calculator {
    private let estimateChanged:(newEstimate:Double) -> Void

    init(_ estimateChanged:(newEstimate:Double) -> Void) {
        self.estimateChanged = estimateChanged
    }
}

由另一个类使用。目前,我正在尝试设置包含计算器的属性:

class AnotherClass {
    private lazy var calculator = Calculator({ [unowned self] in
        self.loadEstimate()
    })
    func loadEstimate() {}
}

而且我遇到了错误。首先,它说的[unowned self]是给我错误:'unowned' cannot be applied to non-class type 'AnotherClass -> () -> AnotherClass'

其次,self.loadEstimate()我得到:value of type 'AnotherClass -> () -> AnotherClass' has no member 'loadEstimate'

我读过的所有内容都向我表明我已经做到了这一点,但是我还没有看到用类的实例设置var的任何示例,该类的实例将闭包作为init参数。

是否有人这样做或不知道下一步该怎么做?还是有更好的方法来做到这一点?

附带说明,此代码的目标是有效提供一种方法,使Calculator类在值更改时通知AnotherClass。我环顾四周,但不确定哪种技术最适合执行此操作。有什么建议?

亚当·坎贝尔

通过在操场上闲逛,这与我想要的就近了。我必须更改类型以匹配您传递给计算器的内容

class Calculator {
    private let estimateChanged:() -> Void

    init(_ estimateChanged:() -> Void) {
        self.estimateChanged = estimateChanged
    }
}

class AnotherClass {
    lazy var callback: () -> Void = { [unowned self] in
        self.loadEstimate()
    }
    var calculator: Calculator?

    // viewDidLoad in the case of a view controller
    init() {
        calculator = Calculator(callback)
    }

    func loadEstimate() {}
}

显然,它并不是您想要的,但是可以编译。尝试在未初始化的对象中引用self时似乎会出现问题(即使您似乎应该能够这样做,因为您指定了lazy,weak或unown等)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

闭包中变量的性能与作为函数参数的性能

来自分类Dev

Swift:如何将闭包作为函数参数传递

来自分类Dev

将闭包作为参数传递给构造函数C ++

来自分类Dev

如何将$ this绑定到在PHP 5.4中作为方法参数传递的闭包?

来自分类Dev

在闭包中为局部变量分配参数

来自分类Dev

PHPUnit测试将闭包作为参数的Mock方法

来自分类Dev

在Swift中的闭包中访问参数数量

来自分类Dev

Swift闭包作为元组中的字段

来自分类Dev

Swift:如何将闭包参数从类方法传递给类中的函数

来自分类Dev

通过Swift和inout参数中的闭包捕获变量

来自分类Dev

Groovy:如何将闭包作为参数传递以执行类内的方法

来自分类Dev

将Swift闭包作为属性存储在Objective-C类中,其中使用typedef声明该块

来自分类Dev

在Swift的递归函数中将闭包作为参数传递

来自分类Dev

在Swift中的Dispatch闭包中修改结构实例变量

来自分类Dev

有没有办法将Groovy闭包作为变量注入到Spock模拟谓词参数中

来自分类Dev

如何将闭包作为变量传递?

来自分类Dev

类作为python __init__中的参数

来自分类Dev

在Swift中将闭包作为init参数传递

来自分类Dev

Swift闭包通用参数

来自分类Dev

groovy ..将闭包作为参数传递给另一个闭包

来自分类Dev

在Swift中的Dispatch闭包中修改结构实例变量

来自分类Dev

将口才模型作为PHP中的闭包参数传递

来自分类Dev

无法从同一类的闭包中更改变量[swift 3.0]

来自分类Dev

UILabel上的Swift映射“闭包中不包含匿名闭包参数”

来自分类Dev

如何传递闭包以将 Ruby 作为参数发送

来自分类Dev

将 API 连接分配给类中的变量并跨闭包使用

来自分类Dev

在swift中将多个闭包作为参数传递给函数

来自分类Dev

Swift 以参数作为参数传递闭包

来自分类Dev

如何在闭包中访问类的变量?

Related 相关文章

  1. 1

    闭包中变量的性能与作为函数参数的性能

  2. 2

    Swift:如何将闭包作为函数参数传递

  3. 3

    将闭包作为参数传递给构造函数C ++

  4. 4

    如何将$ this绑定到在PHP 5.4中作为方法参数传递的闭包?

  5. 5

    在闭包中为局部变量分配参数

  6. 6

    PHPUnit测试将闭包作为参数的Mock方法

  7. 7

    在Swift中的闭包中访问参数数量

  8. 8

    Swift闭包作为元组中的字段

  9. 9

    Swift:如何将闭包参数从类方法传递给类中的函数

  10. 10

    通过Swift和inout参数中的闭包捕获变量

  11. 11

    Groovy:如何将闭包作为参数传递以执行类内的方法

  12. 12

    将Swift闭包作为属性存储在Objective-C类中,其中使用typedef声明该块

  13. 13

    在Swift的递归函数中将闭包作为参数传递

  14. 14

    在Swift中的Dispatch闭包中修改结构实例变量

  15. 15

    有没有办法将Groovy闭包作为变量注入到Spock模拟谓词参数中

  16. 16

    如何将闭包作为变量传递?

  17. 17

    类作为python __init__中的参数

  18. 18

    在Swift中将闭包作为init参数传递

  19. 19

    Swift闭包通用参数

  20. 20

    groovy ..将闭包作为参数传递给另一个闭包

  21. 21

    在Swift中的Dispatch闭包中修改结构实例变量

  22. 22

    将口才模型作为PHP中的闭包参数传递

  23. 23

    无法从同一类的闭包中更改变量[swift 3.0]

  24. 24

    UILabel上的Swift映射“闭包中不包含匿名闭包参数”

  25. 25

    如何传递闭包以将 Ruby 作为参数发送

  26. 26

    将 API 连接分配给类中的变量并跨闭包使用

  27. 27

    在swift中将多个闭包作为参数传递给函数

  28. 28

    Swift 以参数作为参数传递闭包

  29. 29

    如何在闭包中访问类的变量?

热门标签

归档