我需要将参数数量传递给与变量数组计数相等的函数

时间:2019-07-15 21:12:40

标签: swift

我有一个数组变量。如果变量的数组计数为1,则需要使用一个参数调用一个函数,并将索引为0的数组变量作为参数传递。如果是两个,则必须调用带有两个参数的函数,并将索引0和1的数组变量作为参数传递,依此类推,直到最大三个参数。

我曾经尝试过使用保护语句,但是不确定它们是否适用于我的情况。

    class DFile{
//These are the functions:
        public func addData(_ date: Date) { }
        public func addData(_ date: Date, ch: Double) {}
        public func addData(_ date: Date, ch1: Double, ch2: Double) {  }
        public func addData(_ date: Date, ch1: Double, ch2: Double, ch3:       Double) {  }
    }
    //The date is static
    let df = DFile()
    var ch = [Double]() // this is the variable
    ch.append(GetNumber()) //I append data to the variable
    df.addData(dt,ch1: ch[0], ch2: ch[1], ch3: ch[2])// I need this to be dynamic, it needs to be different according to the array count.

预期输出:如果array.count = 2, df.adddata(_ date:Date,ch1:Double,ch2:Double)

1 个答案:

答案 0 :(得分:0)

您可以继续在 DFile's extension 中创建一个单独的方法,该方法将处理各个addData方法的调用,即

extension DFile {
    func addData(_ date: Date, _ ch: [Double]) {
        switch ch.count {
        case 0:
            self.addData(date)
        case 1:
            self.addData(date, ch: ch[0])
        case 2:
            self.addData(date, ch1: ch[0], ch2: ch[1])
        case 3:
            self.addData(date, ch1: ch[0], ch2: ch[1], ch3: ch[3])
        default:
            break
        }
    }
}

addData(_:_:)extension DFile

df.addData(dt,ch)