如果let语句在swift中有多个函数返回

时间:2016-01-08 09:08:37

标签: swift if-statement

说我有一个功能

func function1() -> (result:Bool, data:String){

    return(false, "false")

}

我希望在一个if let语句中使用Bool的返回值,

if let value = function1 {
    //code
} else {
    //code
}

我怎样才能让它发挥作用?我似乎无法在swift文档中看到它,因为它只是一个返回的元组,你可以用点表示法访问它,但只有当你将返回值设置为元组时才这样 - 例如这会起作用

var value = function1()

if value.result {
    ////code
} else {
    //code
}

有效,但如果可能,我想将其全部纳入实际的if else。有任何想法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用switch语句进行模式匹配。

switch function1() {
  case (true, let string):
      print(string)
  default:
     // else stuff here
  }

答案 1 :(得分:1)

我建议使用计算属性。

func someFunc() {

    if let value = computedProperty where value.result {
        print(value.data)
    } else {
        // Do something else
    }
}

var computedProperty: (result: Bool, data: String)? {
    return (true, "FooBar")
}

或使用函数

func someFunc() {

    if let value = anotherFunc() where value.result {
        print(value.data)
    } else {
        // Do something else
    }
}

func anotherFunc() -> (result: Bool, data: String)? {
    return (true, "FooBar")
}

希望这会有所帮助:)

Swift 2.1 Properties

答案 2 :(得分:0)

if上使用此类型,您需要从您的函数中选择返回类型:

func function1() -> (result:Bool, data:String)? {
    return(false, "false")
}

if let value = function1() {
    //code
} else {
    //code
}