可能看起来像一个奇怪的问题,但忍受着我。我写了一个函数:在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返回值。 从技术上讲,这并不能回答我的问题。 –