私は完全な初心者なので、正しい質問をしているかどうかさえわかりません。しかし、 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 を実行しました。どちらの場合もまったく同じことが起こっていますが、[ User(..arguments..) について] 2番目のケースでは「Declaration Expected」というエラーが発生します。ポール卿 (スタンフォード cs193p) は、これはかなり単純なデータベースだと言いましたが、私はこの問題を 6 時間以上解明しようと試みてきました。