使用本地闭包?

时间:2019-06-28 13:19:45

标签: swift

已经向我指出,有一种更好的方式可以编写此代码而不使用本地闭包。我怎样才能做到这一点?点击即可切换图片。

@IBAction func btnMuteMicPressed(_ sender: Any) {
    publisher.publishAudio.toggle()

    let buttonImage: UIImage  = {
        if !publisher.publishAudio {
            return #imageLiteral(resourceName: "group3-1")
        } else {
            return #imageLiteral(resourceName: "group3")
        }
    }()

    btnMuteMic.setImage(buttonImage, for: .normal)
}

2 个答案:

答案 0 :(得分:1)

这可以简称为

@IBAction func btnMuteMicPressed(_ sender: Any) {
    publisher.publishAudio.toggle()
    let buttonImage = !publisher.publishAudio ? #imageLiteral(resourceName: "group3-1") : #imageLiteral(resourceName: "group3")
    btnMuteMic.setImage(buttonImage, for: .normal)
}

我认为这里不需要closure来获得buttonImage。这绝对不意味着您的代码是错误的。

答案 1 :(得分:0)

绝对可以在此处删除封包:

@IBAction func btnMuteMicPressed(_ sender: Any) {
    publisher.publishAudio.toggle()

    let buttonImage: UIImage
    if !publisher.publishAudio {
        buttonImage = #imageLiteral(resourceName: "group3-1")
    } else {
        buttonImage = #imageLiteral(resourceName: "group3")
    }

    btnMuteMic.setImage(buttonImage, for: .normal)
}

但是旧的初始化方式并没有天生的错误。