创建“User 结构上的 currentUser 类型属性”不会导致无限递归吗?

1 data-structures swift

通过 Apple 的“使用 Swift 进行应用程序开发”学习 Swift 编程。我在第 2.3 章中遇到了以下任务的困难:

假设您有一个需要用户登录的应用程序。您可能有一个User类似于下图所示的结构。但是,除了跟踪特定用户信息之外,您可能还希望有一种方法来了解当前登录的用户是谁。在下面的结构上创建一个currentUser 类型属性User,并将其分配给代表您的用户对象。现在您可以通过结构体访问当前用户User 。打印出 的属性currentUser

struct User {

    var userName: String

    var email: String

    var age: Int

}
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,我需要在结构中创建currentUser类型属性?这将导致无限递归,不是吗?因此,我不确定我是否正确。请帮忙澄清一下。UserUser

ric*_*ter 5

仔细阅读练习。它要求您创建一个类型属性,该属性与您之前创建的实例属性不同。也就是说,您正在寻找一种方法来询问一般User类型当前登录的用户是谁,而不是询问某些特定用户。(我就到此为止,因为这是一个学习练习,您可能想自己找到完整的解决方案......)

关于递归问题:类型引用该类型的实例,或者类型的实例引用其他实例是完全可以的。例如,您可以创建一个指向 的另一个实例的favoriteTeacher属性。UserUser

你需要注意的是你是否正在创建圆形结构(例如,如果我说我最喜欢的老师是@nate-cook,Nate 说他最喜欢的老师是@matt,而 Matt 说他最喜欢的老师是我) ,以及您正在编写的算法是否可以安全地处理循环结构,而不会陷入无限递归或无限循环。(如果您打算通过跟踪favoriteTeacher属性来找到所有最喜欢的老师,直到找到一个nil,那么您会遇到麻烦。)