메타타입 | String.type |
---|---|
메타타입의 인스턴스(타입) | String.self |
타입의 인스턴스 | “Miro” |
class Human {
var: name = "Miro"
}
let miro: Human = Human()
miro 상수와 같이 Human 타입이라고 선언했을 경우, Human 타입의 instance를 넣어준다.
그렇다면 아래와 같은 코드일 경우, 메타타입의 instance(Human.self)를 넣어주어야됨을 알 수 있다.
let humanType: Human.Type = Human.self //Human이라고하면 에러
struct GroceryProduct: Codable {
var name: String
var points: Int
var description: String?
}
let json = """
{
"name": "Durian",
"points": 600,
"description": "A fruit with a distinctive scent."
}
""".data(using: .utf8)!
let decoder = JSONDecoder()
let product = try decoder.decode(GroceryProduct.self, from: json)
print(product.name) // Prints "Durian"
T.Type
의 인스턴스를 넣어주어야된다.GroceryProduct.type
의 인스턴스 GroceryProduct.self
가 첫번째 파라미터로 들어가야된다.func decode<T>(
_ type: T.Type,
from data: Data
) throws -> T where T : Decodable