2016-12-06 25 views
5

Trong github của Apple cho người quản lý Swift Gói họ sử dụngNhập func, struct, class và @_exported trong Swift là gì?

import func POSIX.isatty 
import func libc.strerror_r 
import var libc.EINVAL 
import var libc.ERANGE 
import struct PackageModel.Manifest 

source

Ngoài ra còn có một tập tin mà mã duy nhất trong đó là @_exportedsource

@_exported import func libc.fileno 

Đây có phải là một Swift 3 tính năng? Tôi không thể tìm thấy bất cứ nơi nào mà bạn có thể nhập một loại trong tài liệu Swift và không có gì trên @_exported.

Trả lời

9

Bạn có thể nhập chỉ là một phần cụ thể của một mô-đun, không phải là một toàn bộ mô-đun:

Cung cấp hơn giới hạn chi tiết mà những biểu tượng được nhập khẩu-bạn có thể chỉ định một submodule cụ thể hoặc một tuyên bố cụ thể trong một mô-đun hoặc submodule . Khi biểu mẫu chi tiết này được sử dụng, chỉ có biểu tượng đã nhập (và không phải là mô-đun khai báo nó) được tạo sẵn trong phạm vi hiện tại.

Từ Import Declaration

Ví dụ import func POSIX.isatty sẽ nhập khẩu chức năng isatty từ mô-đun POSIX thay vì nhập khẩu toàn bộ mô-đun POSIX (đó là BIG).

Thuộc tính @_exported bắt đầu bằng dấu gạch dưới. Điều đó có nghĩa đó là thuộc tính Swift riêng. Không phải tính năng, chi tiết triển khai. Tóm lại, thuộc tính này cho phép bạn xuất một biểu tượng từ mô-đun khác như thể nó là từ mô-đun của bạn.

+0

là các tính năng này được thêm vào trong Swift 3 chưa? – lostAtSeaJoshua

+1

@lostAtSeaJoshua Nope. Tôi tin rằng nhập khẩu chỉ là một phần của mô-đun là trong Swift kể từ đầu. '@ _exported' ban đầu là' @ exports' nhưng vẫn là chi tiết triển khai không có giấy tờ. – Sulthan

+0

Lợi ích của việc này là gì? Thời gian biên dịch nhanh hơn? – Kdawgwilk

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