Использовать локальное закрытие? - PullRequest
0 голосов
/ 28 июня 2019

Мне было отмечено, что есть лучший способ написать этот код без использования локального замыкания. Как я могу это сделать? Переключайте изображения по клику.

@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 ]

1 голос
/ 28 июня 2019

Это можно сократить до,

@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 требуется здесь. Это определенно не означает, что ваш код ошибочен.

0 голосов
/ 28 июня 2019

Закрытие определенно можно сбросить здесь:

@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)
}

Но в старом способе инициализации нет ничего неправильного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...