【发布时间】:2016-05-08 09:01:45
【问题描述】:
由于我是一个完整的初学者,我什至不知道我问的问题是否正确。但我无法理解为什么 for 循环中代码的“User(name: "John ...)”部分工作
CASE1
struct User
{
let name: String
let company: String
let login: String
let password: String
static let database: Dictionary<String, User> = {
var theDatabase = Dictionary<String, User>()
for user in [
User(name: "John Appleseed", company: "Apple", login: "japple", password: "foo"),
User(name: "Madison Bumgarner", company: "World Champion San Francisco Giants", login: "madbum", password: "foo"),
User(name: "John Hennessy", company: "Stanford", login: "hennessy", password: "foo"),
User(name: "Bad Guy", company: "Criminals, Inc.", login: "baddie", password: "foo")
] {
theDatabase[user.login] = user
}
return theDatabase
}()
}
但这不是
CASE2
struct User
{
let name: String
let company: String
let login: String
let password: String
for user in User(name: "John Appleseed", company: "Apple", login: "japple", password: "foo"){
print(user)
}
}
为了了解 CASE1 的工作原理,我运行了此代码的更简单版本,即 CASE2。即使在两种情况下都发生了完全相同的事情,[关于用户(..arguments..)]我在第二种情况下收到错误“预期声明”。 Sir Paul(Stanford cs193p) 说这是一个相当简单的数据库,但我花了 6 个多小时试图解决这个问题。
【问题讨论】:
标签: ios xcode swift cs193p member-initialization