【问题标题】:if condition in swift function for optional parameter可选参数的 swift 函数中的 if 条件
【发布时间】:2016-10-25 23:49:06
【问题描述】:

我有一个函数:myFunction(param1: class?, param2: class?, param3: Int, ...) 其中第一个参数是可选的,它们的类型是自定义类。 但有时,我需要放入这些参数的类不存在,这就是为什么这些参数是可选的。而且我不能将“nil”作为值。

所以我想做这样的事情:

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, ...)

非常感谢您的帮助:)

问候,

【问题讨论】:

  • But sometimes, the class I need to put in these parameters doesn't exist, that's why these parameters are optional. 怎么会有一个不作为参数类型存在的类?
  • 另外,我很好奇你认为 nil 是什么意思,如果不是 &lt;nothing&gt;
  • 你应该清楚类、类型、实例等。你在什么情况下传递什么?你真的要在最后一个函数调用中传递 type Int 吗?

标签: swift function optional-parameters


【解决方案1】:

您不清楚将您的类用作函数中的参数。您应该根据使用情况重新设计它们。如果你想使用这个函数,最初的 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, ...)
}

【讨论】:

  • 谢谢。我会尝试改变架构或改变一些东西
【解决方案2】:

您将函数设计为获取一些可选参数,而不是在调用函数时不关心展开,您只需要在函数中使用 guard 或 if let 处理这些可选参数。

func myFunction(param1: AnyObject?, param2: AnyObject?, param: AnyObject) {

   guard let firstParam = param1, secondParam = param2 else { return}

   // here use your unwrapped params

}

【讨论】:

  • 哦,我明白了!非常感谢,我试试这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
相关资源
最近更新 更多