我正在尝试这些代码行
class Student {
var name: String
var age: Int?
init(name: String) {
self.name = name
}
func description() -> String {
return age != nil ? "\(name) is \(age) years old." : "\(name) hides his age."
}
}
var me = Student(name: "Daniel")
println(me.description())
me.age = 18
println(me.description())
以上代码生成如下
Daniel hides his age.
Daniel is Optional(18) years old.
我的问题是为什么那里有可选的(18),我怎样才能删除可选的并只打印
Daniel is 18 years old.
最佳答案
您必须了解 Optional 的真正含义。许多 Swift 初学者认为 var age: Int?
意味着 age 是一个可能有值也可能没有值的 Int。但这意味着 age 是一个 Optional,它可能包含也可能不包含 Int。
在您的 description()
函数中,您不打印 Int,而是打印 Optional。如果你想打印 Int,你必须打开 Optional。您可以使用“可选绑定(bind)”来解包可选:
if let a = age {
// a is an Int
}
如果你确定 Optional 持有一个对象,你可以使用“强制展开”:
let a = age!
或者在您的示例中,由于您已经在描述函数中对 nil 进行了测试,您可以将其更改为:
func description() -> String {
return age != nil ? "\(name) is \(age!) years old." : "\(name) hides his age."
}
关于swift - 打印可选变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25846561/