首页 > 解决方案 > 我需要将参数数量传递给与变量数组计数等效的函数

问题描述

我有一个数组变量。如果变量的数组计数为 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)

标签: swift

解决方案


您可以继续创建一个单独的方法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)

推荐阅读