便所の落書きレベルなので、クソ暇な人は、暇つぶしにどうぞ。以下のように同じスコープ内に同じ名前のタイプエイリアスと変数が共存するときにはタイプエイリアスが勝つみたいです。
private let ID = "id"
struct Book {
typealias ID = String
let dict: [String:String] = ["id":"114514", "name":"1919"]
var id: String {
return dict[ID]
//=> Cannot convert value of type '(Book.ID).Type'(aka 'String.Type') to expected argument type 'DictionaryIndex<_, _>'
}
}
では、もうちょっと親切に dict へのキー指定に index(forKey: String)
を使ってみれば、さすがに大丈夫なのかなと思ったのですが、そうでもなかった。
private let ID = "id"
struct Book {
typealias ID = String
let dict: [String:String] = ["id":"114514", "name":"1919"]
var id: String {
return dict.index(forKey: ID)
//=> Cannot convert value of type '(Book.ID).Type'(aka 'String.Type') to expected argument type 'DictionaryIndex<_, _>'
}
}
おとなしくどっちかの名前を変えてあげることで対応しました。Swiftでのプログラミングは楽しいですね!!!!!