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