gpt4 book ai didi

swift - 打印可选变量

转载 作者:IT王子 更新时间:2023-10-29 04:56:09 26 4
gpt4 key购买 nike

我正在尝试这些代码行

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com