首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何避免重复函数

如何避免重复函数
EN

Stack Overflow用户
提问于 2020-08-27 23:19:38
回答 1查看 68关注 0票数 0

我有纸牌游戏应用程序,可以根据游戏场景播放声音文件。每个场景都有一个由6个声音文件组成的数组,当游戏场景出现时,每次调用函数时都会随机播放1个声音。

有7种不同的场景,每个场景都有一系列声音。目前,我有7个不同的函数;每个场景都有一个函数。我正在寻找一种方法,以取代7个功能,这是相同的,除了声音阵列在每个功能与1功能。

当玩家被敲诈时,下面的函数就会被调用,当玩家失败时,会调用另一个函数。这些是场景。

代码语言:javascript
复制
func soundArrayPlayerBlackjack(){

    let sounds = ["looks", "my seat2", "knicks", "daddy money", "cheeto", "whipped"]
         
         guard let sound = sounds.randomElement(),
             let soundURL = Bundle.main.url(forResource: sound, withExtension: "mp3") else { return }

         do {
             audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
         }
         catch {
             print(error)
         }

         audioPlayer?.play()}```
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-28 01:05:22

您可以使用名为sounds的参数编写一个函数。

代码语言:javascript
复制
func playRandomSound(sounds: [String]){
     guard let sound = sounds.randomElement(),
         let soundURL = Bundle.main.url(forResource: sound, withExtension: "mp3") else { return }

     do {
         audioPlayer = try AVAudioPlayer(contentsOf: soundURL)
     }
     catch {
         print(error)
     }

     audioPlayer?.play()
}

然后,声明包含这些声音的7个数组:

代码语言:javascript
复制
let blackJackSounds = ["looks", "my seat2", "knicks", "daddy money", "cheeto", "whipped"]
let getBustSounds = ["otherSound1", "otherSound2", "otherSound3"]
let loseSounds = ["foo", "bar", "baz"]
// and so on...

现在不应该调用soundArrayPlayerBlackjack(),而应该调用:

代码语言:javascript
复制
playRandomSound(sound: blackJackSounds)

对于任何其他声音组,只需传入正确的数组即可。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63625375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档