我试着用这些代码行
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)那里,如何删除可选和jus打印
Daniel is 18 years old.
先谢谢你。
你必须明白什么是可选的。许多Swift初学者认为var年龄:int?意味着年龄是一个Int,它可能有也可能没有值。但它意味着年龄是一个可选的,可能持有或不持有国际。
在你的description()函数中,不打印Int,而是打印Optional。如果要打印Int,您必须打开可选。您可以使用“可选绑定”来解开可选:
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." }