Khi cố gắng hiểu một chương trình, hoặc trong một số trường hợp góc, thật hữu ích để có thể thực sự tìm ra loại gì đó. Tôi biết trình gỡ lỗi có thể hiển thị cho bạn một số thông tin loại và bạn thường có thể dựa vào suy luận kiểu để thoát khỏi việc không chỉ định loại trong các tình huống đó, tuy nhiên, tôi thực sự muốn có một cái gì đó giống như của Pythontype()
DynamicType (xem câu hỏi này )
Cập nhật: điều này đã được thay đổi trong một phiên bản gần đây của Swift, obj.dynamicType
giờ đây cung cấp cho bạn một tham chiếu đến loại và không phải là thể hiện của loại động.
Điều này có vẻ hứa hẹn nhất, nhưng cho đến nay tôi vẫn chưa thể tìm ra loại thực tế
class MyClass {
var count = 0
}
let mc = MyClass()
# update: this now evaluates as true
mc.dynamicType === MyClass.self
Tôi cũng đã cố gắng sử dụng một tham chiếu lớp để tạo một đối tượng mới, mà không làm việc, nhưng kỳ quặc đã cho tôi một lỗi nói rằng tôi phải thêm một required
initializer:
làm:
class MyClass {
var count = 0
required init() {
}
}
let myClass2 = MyClass.self
let mc2 = MyClass2()
Vẫn chỉ là một bước nhỏ để thực sự khám phá loại của bất kỳ đối tượng nào.
chỉnh sửa : Tôi đã xóa một số lượng đáng kể các chi tiết không liên quan - hãy xem lịch sử chỉnh sửa nếu bạn quan tâm :)
print(mc)
hoặc dump(mc)
sẽ in một bản tóm tắt (mà bạn có thể nhận được từ toString(mc)
hoặc reflect(mc).summary
), trong đó sẽ chứa tên lớp ở đó ở đâu đó. Nhưng không rõ làm thế nào để có được tên lớp.