Swift Optionals - 条件中的变量绑定需要初始化程序

Har*_*rry 15 optional swift

我是Swift的新手并试图弄清楚Optional的概念.我在Playground中有一小段代码,它给了我"条件中的变量绑定需要初始化程序"错误.有人可以解释为什么以及如何解决它?

我只想打印"是"或"否",具体取决于"score1"是否有值.这是代码:

import Cocoa

class Person {
    var score1: Int? = 9

    func sum() {
        if let score1 {
            print("yes")
        } else {
            print("No")
        }
    }//end sum
 }// end person

 var objperson = person()
 objperson.sum()
Run Code Online (Sandbox Code Playgroud)

Lor*_*aef 13

if let语句采用可选变量.如果是nil,则执行else块或不执行任何操作.如果它具有值,则将该值作为非可选类型分配给另一个变量.

因此,如果没有,则以下代码将输出score1的值或"No":

if let score1Unwrapped = score1
{
    print(score1Unwrapped)

}

else
{
    print("No")
}
Run Code Online (Sandbox Code Playgroud)

较短版本的是:

print(score1 ?? "No")
Run Code Online (Sandbox Code Playgroud)

在您的情况下,如果您实际上没有使用存储在可选变量中的值,您还可以检查值是否为nil:

if score1 != nil {
...
}
Run Code Online (Sandbox Code Playgroud)


Ade*_*edt 5

写作

if let score1 {
Run Code Online (Sandbox Code Playgroud)

没有意义.如果您想查看得分是否有值,请使用

if score1 != nil {
Run Code Online (Sandbox Code Playgroud)

要么

if let score = score1 {
Run Code Online (Sandbox Code Playgroud)

最后一种情况将新的非可选常量绑定scorescore1.这使您可以score在if语句中使用.

  • 自 swift 5.7 起现在有效 (2认同)