2015-05-20 54 views
-4

我刚开始学习swift,我看到了不同的变量!要么 ?附加到末尾意味着它们是可选的或不是。Swift基础知识“!” &“?”

let interestingNumbers = [ 
    "Prime": [2, 3, 5, 7, 11, 13], 
    "Fibonacci": [ 1, 1, 2, 3, 5, 8], 
    "Square": [ 1, 4, 9, 16, 25] 
] 
    var largest = 0 
    var type: String? 
for (kind, numbers) in interestingNumbers { 
    for number in numbers { 
     if number>largest { 
     largest = number 
      type = kind 
     } 
    } 
} 
println("Largest: \(largest) Kind: \(type)") 

我得到的 结果“最大:25类:自选(”方“)”

究竟做了可选的均值和我怎么能解决这个问题,以便它只是显示“广场”?

回答

1

变量type的类型是String optional(String?)。它可以有值或只是nil。

你要解开它,如果它的价值,并且可以使用零合并运算符(?),如果它包含一个值,以解开一个可选的,或返回默认值,如果它是nil.For例如:

let unknownType = "Unknown" 
println("Largest: \(largest) Kind: \(type ?? unknownType)") // Largest: 25 Kind: Square 
+0

这是因为你的变量类型为零。 – tounaobun