2017-01-24 17 views
9

Giống như objc_getClassList nhưng đối với cấu trúc.Cách để có được tất cả các kiểu cấu trúc trong thời gian chạy Swift-3?

Chỉ cần đưa ra một số ngữ cảnh: phương pháp này (cho các lớp) được sử dụng trong các bài kiểm tra đơn vị của chúng tôi để kiểm tra tất cả các lớp có hậu tố nhất định có kiểm tra. Chúng tôi kiểm tra các bài kiểm tra!

+1

Theo như tôi biết, cấu trúc không thực sự tồn tại trong thời gian chạy. Chúng chỉ là cách nói cho trình biên dịch biết cách xử lý dữ liệu liên quan được nhóm lại với nhau. Trong hầu hết các trường hợp (tức là khi không sử dụng đa hình giao thức), các phương thức hoàn toàn được gạch chân và không cần bất kỳ loại kiến ​​thức thời gian chạy nào về cấu trúc hiện có – Alexander

+0

@Alexander và nếu tất cả các cấu trúc đều tuân theo một giao thức duy nhất? Có những gợi ý rằng bạn có thể sử dụng 'Mirror (phản ánh: Protocol.self) .children' tại một thời điểm nào đó, nhưng trong phiên bản Swift hiện tại, mảng trống. http://stackoverflow.com/questions/35125708/how-to-list-swift-types-that-conform-to-protocol-using-reflection –

+0

Các giao thức cũng không thể được biên dịch. Nếu trình biên dịch có đủ thông tin để có thể gửi đi tất cả các phương thức của giao thức một cách tĩnh, thì không có lý do gì để nó tồn tại trong thời gian chạy. – Alexander

Trả lời

1

Trình biên dịch Swift chủ yếu phát ra đủ siêu dữ liệu để thực hiện kiểu phản chiếu này ngày hôm nay nhưng nó không được hiển thị. Phản ánh trung thực là "danh sách những điều chúng tôi muốn làm" nhưng chưa được triển khai.

Các vấn đề liên quan