swift - 选择随机函数的聪明方法
问题描述
我正在尝试快速选择并运行一个随机函数。
目前我已经实现了这样的开关盒
switch Int.random(in: 1...2) {
case 1: functionOne()
case 2: functionTwo()
default: print("error")
}
如果有更多选项,则代码会变得过多。
如何改进代码以使其节省额外的行?最佳方案是:
[functionOne(), functionTwo()].randomElement()
这不起作用,只是运行数组中的最后一个元素。有没有办法将函数放在数组中并让它们运行?
解决方案
如果您希望不同功能的概率不同,那么您的 switch 语句将是一个不错的选择:
switch Int.random(in: 1...100) {
case 1...10: functionOne() //10% of calls
case 11...100: functionTwo() //90% of calls
default: noFunction()
}
如果您希望它们都具有相同的可能性,那么马特的方法似乎更干净:
let functions = [functionOne, functionTwo]
(functions.randomElement()!)()
推荐阅读
- python - 我想要一个按钮来执行双重命令一个命令将终止我当前的窗口,另一个命令将在 tkinter 中打开一个新窗口
- java - 如何避免对mysql中表的并发读取访问?
- python - pandas 根据 2 个单独行上的 LatLong 值计算距离
- windows - 如何在 PowerShell 中将位置与主文件夹进行比较
- perl - perl Event::Lib cpan 安装失败
- azure-devops - 将组织连接到 Azure Active Directory 后,无法使用 Microsoft 帐户登录访问 Azure DevOps 组织网站
- c# - Web API 项目和 Azure Function 项目的端到端测试
- rust - 这些迭代向量的方法有什么不同吗?
- javascript - 无法正确读取 json 文件
- android - 在构建 Home() 时引发了以下 NoSuchMethodError:在 null 上调用了方法“>”。接收方:null 尝试调用:>(1)