Проблема здесь в том, чтобы увидеть, какая переменная неизвестна, предположим, что у вас есть переменные X, и вы всегда получаете известные переменные X-1 и 1 неизвестную, вам на самом деле не нужно проверять, являются ли известные переменные! = Nil.
Другая возможность, которую я рекомендую вам:
func resolve(a: Double?, b: Double?, c: Double?)-> Double{
//Default value
var result: Double = 0.0
//a missing
if let b = b, let c = c{
result = b*c
}
//b missing
if let a = a, let b = b{
result = a/b
}
//c missing
if let a = a, let c = c{
result = a/c
}
return result
}
В этом случае у вас есть один вызов с 3 параметрами, каждый из которых является необязательным, поэтому, если вы попробуете «if let» с 2 o одновременно, и это сработает, это означает, что другой является переменной неизвестной.
Это самое «чистое» решение, которое я могу придумать.