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)
解决方案
您可以继续创建一个单独的方法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)
推荐阅读
- python - 在句子级别找到每个单词的频率
- c - 在 C 中生成大小为 10^6 的数组
- javascript - 是否可以不使用 Pine 脚本为交易视图编码?
- material-ui - MUI V5 - MakeStyles 样式被覆盖
- flutter - 有什么方法可以强类型地使用 Navigator?
- python - groupby 一列以获取另一列中的最小值和对应值
- python - 如何使用 re.split() 分割两个字符的实例?
- javascript - 查找 svg 路径元素的中心
- powerbi - power bi 可以从没有历史数据的表中创建 scd 吗?
- java - IndexOutOfBoundsException 索引 0 大小 0 试图编辑填充数组列表中的元素