首页 > 解决方案 > 不同参数的函数

问题描述

我有一个函数,其中 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 {

//更新

我发现这个帖子中的变量可以有多种类型。但它似乎不适用于数组(或者至少我不知道如何更改代码)。

标签: swift

解决方案


这是基于问题中链接的解决方案

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])

推荐阅读