可能看起來像一個奇怪的問題,但忍受着我。我寫了一個函數:在Swift 3中它實際上可以測試返回類型的Void(aka())
func togglePlay() {
if _musicPlayer.isPlaying {
_musicPlayer.pause()
} else {
_musicPlayer.play()
}
}
這一工程,但我認爲,有關使用三元操盤手,如果聲明的內容:
_musicPlayer.isPlaying ? _musicPlayer.pause() : _musicPlayer.play()
,提供有關不匹配類型的編譯器錯誤 - 暫停()返回Void,play()返回Bool。所以我需要以某種方式將返回類型的pause()轉換爲Bool(測試Void)。我猜想替代方案可能是:
- 將play()的返回類型轉換爲Void。
- 使用三元運算中的多個語句暫停後添加一個布爾聲明()
顯然,如果這是不可能的,那麼我有一個有效的解決方案,但它的感覺就像有可能是雨燕的一部分我不知道的語法。
作爲跟進,我可以實現我想要的: '_musicPlayer.isPlaying? _musicPlayer.pause():(_ = _musicPlayer.play())' 有效地吞噬Bool返回值。 從技術上講,這並不能回答我的問題。 –