swift - 不同参数的函数
问题描述
我有一个函数,其中 2 个参数可以是[Int]?
或Int
. 我真的必须定义 4 个函数来解决这个问题吗?
func add(x : Float, y : Float, z : Float, out : [Int]? = nil, incoming : [Int]? = nil) -> Bool {
func add(x : Float, y : Float, z : Float, out : Int, incoming : [Int]? = nil) -> Bool {
func add(x : Float, y : Float, z : Float, out : [Int]? = nil, incoming : Int) -> Bool {
func add(x : Float, y : Float, z : Float, out : Int, incoming : Int) -> Bool {
//更新
我发现这个帖子中的变量可以有多种类型。但它似乎不适用于数组(或者至少我不知道如何更改代码)。
解决方案
这是基于问题中链接的解决方案
protocol OneOrManyInt { }
extension Int: OneOrManyInt { }
extension Array: OneOrManyInt where Element == Int {}
func add(x : Float, y : Float, z : Float, out : OneOrManyInt? = nil, incoming : OneOrManyInt? = nil) -> Bool {...}
然后它可以像这样使用
add(x: 1.0, y: 2.0, z: 3.0, out: [1,2,3], incoming: 10)
add(x: 1.0, y: 2.0, z: 3.0, incoming: 10)
add(x: 1.0, y: 2.0, z: 3.0, out: [1,2,3])
推荐阅读
- r - 如何使用应用于多行的条件来选择个人?
- r - 直接在 ggplot aes 中闪亮的输入变量(RMarkdown flexdashboard)
- assembly - 为什么在使用双打时这个分支问题在 MIPS 中不起作用?
- ios - 如何在句子中间搜索单词或短语?
- netlogo - Netlogo,要求一个四舍五入的代理值来完成一项任务
- vue.js - 对 Prop(来自父级)对象的属性进行计算并将结果放入模板中的最佳方法
- google-sheets - 我可以使用第二个条件订购数据透视表吗?
- android - 无法构建,因为框架已经在构建 - Flutter
- amazon-web-services - 架构未与 AWS Glue 爬网程序正确合并
- reactjs - 如何在 React-Router 中传递参数