我是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()
答案 0 :(得分:13)
if let语句采用可选变量。如果是nil,则执行else块或不执行任何操作。如果它有一个值,则将该值作为非可选类型分配给另一个变量。
因此,以下代码将输出score1或" No"的值。如果没有:
if let score1Unwrapped = score1
{
print(score1Unwrapped)
}
else
{
print("No")
}
相同的较短版本是:
print(score1 ?? "No")
在您的情况下,如果您实际上没有使用存储在可选变量中的值,您还可以检查该值是否为nil:
if score1 != nil {
...
}
答案 1 :(得分:5)
书写
if let score1 {
没有意义。如果您想查看得分是否有值,请使用
if score1 != nil {
或
if let score = score1 {
最后一种情况将新的非可选常量score
绑定到score1
。这使您可以在if语句中使用score
。
答案 2 :(得分:0)
问题是if let
假设您要创建具有某个值的常量score1
。如果你只是想检查它是否包含一个值,就像在nil
中一样,你应该像下面这样做:
if score1! != nil {
// println("yes")
所以你的完整代码看起来像这样:
class Person {
var score1: Int? = 9
func sum() {
if score1 != nil {
println("yes")
}
else {
println("no")
}
}
}
var objperson = Person()
objperson.sum()