我有一个函数:myFunction(param1:class?,param2:class?,param3:Int,...),其中2个第一个参数是可选的,它们的类型是自定义类。 但有时候,我需要输入这些参数的类并不存在,这就是为什么这些参数是可选的。而我无法提出“无所事事”。作为价值。
所以我想做这样的事情:
if (param1 !=nil && param2 != nil) {
myFunction(param1: myClass, param2: myClass, param3: 2, ...)
}
else if (param1 ==nil && param2 == nil) {
myFunction(param3: 2, ...)
}
else if (param1 !=nil && param2 == nil) {
myFunction(param1: myClass, param3: 2, ...)
}
else if (param1 ==nil && param2 != nil) {
myFunction(param2: myClass, param3: Int, ...)
}
...
问题是,在我的函数中我有更多可选参数,所以如果我需要一个" if"所有选项的条件,都无法管理。
那么有没有办法在函数参数中加入if条件?示例:
myFunction(myClass==nil ? <nothing>:param1: myClass, myClass==nil ? <nothing>:param2: myClass, param3: 2, ...)
非常感谢您的帮助:)
此致
答案 0 :(得分:0)
您不清楚在函数中使用类作为参数。您应该根据用途重新构建它们。如果你想使用这个函数,初始2参数作为可选项,那么你可以做这样的事情。
if let param1 = param1 {
if let param2 = param2 {
myFunction(param1: myClass, param2: myClass, param3: 2, ...)
}else{
myFunction(param1: myClass, param3: 2, ...)
}
}else if let param2 = param2 {
myFunction(param2: myClass, param3: Int, ...)
}else{
myFunction(param3: 2, ...)
}
答案 1 :(得分:0)
你设计的函数是为了让一些参数成为可选参数,而不是在你调用函数时你不应该关心解包,你只需要在函数中使用guard或者let来处理这个可选参数。
func myFunction(param1: AnyObject?, param2: AnyObject?, param: AnyObject) {
guard let firstParam = param1, secondParam = param2 else { return}
// here use your unwrapped params
}