【发布时间】:2018-03-23 03:54:34
【问题描述】:
-
假设您有一个需要用户登录的应用程序。您可能有一个类似于下图所示的 User 结构。但是,除了跟踪特定的用户信息之外,您可能还想知道当前登录的用户是谁。在下面的
User结构上创建currentUser类型属性,并将其分配给代表您的user对象。现在您可以通过 User 结构访问当前用户。打印出currentUser的属性。struct User { var userName: String var email: String var age: Int static var currentUser = User(userName: "Bob", email: "bob@gmail.com", age: 18) //This line was typed by me. // My answer for the 2nd part. mutating func logIn(user: User) { currentUser = user print("\(userName) has logged in.") } }打印(User.currentUser)
与
User结构关联的其他属性和操作可能是类型属性或方法的良好候选者。一个可能是一种登录方法。返回并创建一个名为logIn(user:)的类型方法,其中user的类型为User。在方法的主体中,将传入的用户分配给currentUser属性,并使用用户的用户名打印出一条声明用户已登录的语句。
在下面,调用logIn(user:) 方法并传入与您在上面分配给currentUser 的User 实例不同的实例。观察控制台中的打印输出。
编辑:想通了!
struct User {
var userName: String
var email: String
var age: Int
static var currentUser = User(userName: "Bob", email: "bob@gmail.com", age: 18)
static func logIn(user: User) {
currentUser = user
print("\(currentUser.userName) has logged in.")
}
}
print(User.currentUser.userName) //Bob
print(User.currentUser.email) //bob@gmail.com
print(User.currentUser.age) //18
var newUser = User(userName: "Joey", email: "joey@yahoo.com", age: 20)
User.logIn(user: newUser) //Joey has logged in.
print(User.currentUser.userName) //Joey
print(User.currentUser.email) //joey@yahoo.com
print(User.currentUser.age) //20
【问题讨论】: