首页 > 解决方案 > Swift 中具有返回类型的可选函数

问题描述

我确实有一个带有可选返回类型的函数。我对它产生的输出感到困惑。代码是这样的。

func displayAge(age: Int) -> Int? {
    return 23
}

if var age = displayAge(age: 22) {
    print("Age is correct")
} else {
    print("Age is incorrect")
}

我过了 22 岁,我应该得到一个输出,因为年龄不正确,但我得到年龄是正确的

标签: swift

解决方案


您似乎对这个可选的绑定 if 语句感到困惑:

if var age = displayAge(age: 22) {
    print("Age is correct")
} else {
    print("Age is incorrect")
}

这将执行以下操作:

  • 调用displayAge(age: 22),检查其返回值
  • 如果返回值不是nil
    • 将返回值赋给变量age
    • print("Age is correct")
  • 否则
    • print("Age is incorrect")

它不检查是否22等于23。它总是会打印Age is correct,因为displayAge总是返回Optional(23),但事实并非如此nil

您可以像这样检查 22 是否等于 23:

func displayAge() -> Int { return 23 }

if 22 == displayAge {
    print("Age is correct")
} else {
    print("Age is incorrect")
}

或者如果你真的想使用可选绑定,

func displayAge(age: Int) -> Int? { return 23 == age ? 23 : nil }

if let _ = displayAge(age: 22) {
    print("Age is correct")
} else {
    print("Age is incorrect")
}

推荐阅读