【问题标题】:Swift execute a simple test and pass the result inside a parameter of a functionSwift 执行一个简单的测试并将结果传递到函数的参数中
【发布时间】:2016-04-14 08:09:48
【问题描述】:

我找到了以下解决方案,可以在函数的参数中执行简单的“if ... then ... else”。它正在工作,但我很确定在 Swift 中有更简洁的方法可以做到这一点。

我想知道这里是否可以使用闭包作为解决方案,但是闭包的语法和逻辑对我来说还不是很明显。在学习这部分语言之前,有人能告诉我它是否真的能让我有一种更清洁的方式来实现这个简单的需求吗?

var tTexteSplitted: Array<String> = ["A", "B", "C"]

for (Index, Texte) in tTexteSplitted.enumerate()
{
    SomeFunction(Texte, TestValue((Index == 0), ReturnTrue: "SomeString", ReturnFalse: "AnotherString"))
}

func TestValue(Test: Bool, ReturnTrue: String, ReturnFalse: String) -> String
{
    if Test { return ReturnTrue } else { return ReturnFalse }
}

func SomeFunction(Param1: String, Param2: String)
{
    // Do something with Param1 and Param2
}

【问题讨论】:

    标签: swift function if-statement closures conditional-statements


    【解决方案1】:

    ternary conditional operator ?: 是要走的路。按如下方式使用:

    var tTexteSplitted = ["A", "B", "C"]
    
    for (Index, Texte) in tTexteSplitted.enumerate()
    {
        SomeFunction(Texte, Index == 0 ? "SomeString" : "AnotherString")
    }
    
    func SomeFunction(Param1: String, Param2: String)
    {
        // Do something with Param1 and Param2
    }
    

    【讨论】:

    • 谢谢...银牌 ;-)
    【解决方案2】:

    不清楚这里是否需要关闭:

    var tTexteSplitted: Array<String> = ["A", "B", "C"]
    
    for (Index, Texte) in tTexteSplitted.enumerate()
    {
        SomeFunction(Texte, Index == 0 ? "SomeString" : "AnotherString")
    }
    
    func SomeFunction(Param1: String, Param2: String)
    {
        // Do something with Param1 and Param2
    }
    

    【讨论】:

    • 嗯...你是最快的...金牌!
    猜你喜欢
    • 1970-01-01
    • 2017-04-13
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2017-06-26
    • 2021-02-12
    • 1970-01-01
    相关资源
    最近更新 更多