3
A
回答
6
在你的類型的擴展使用屬性的規則實際上並沒有從使用特性其他地方的規則有什麼不同。
如果該財產被宣佈爲private
,它不能用於除已聲明的範圍內的任何地方。這意味着即使在同一個文件中。
如果該屬性被聲明爲fileprivate
,則只能在聲明的文件內使用(以及在該文件中通過任何內容)。
如果聲明屬性爲internal
(默認值),則只能在聲明的模塊內使用(並且在該文件中使用任何內容)。
如果屬性聲明public
或open
,它可以通過導入它在聲明的模塊文件中使用的模塊內的任何以及模塊的外部。
沒有辦法以這樣一種方式聲明一個變量,使其可以被類型的擴展使用,但不能被類型之外的其他事物使用。這實際上並不是從Swift 2到Swift 3的變化。這一直是這種情況。你在找什麼其他語言稱爲protected
。 Swift沒有,並且從來沒有從其他語言的protected
等效。
您可以得到的最接近的結果是在單個文件中聲明類型及其所有擴展名,並且不允許在該文件中聲明任何其他類型或類型的擴展名。然後,您可以將屬性標記爲fileprivate
,並通過該文件中的擴展名使用它們。這仍然不允許在該文件之外通過該類型的擴展來使用該屬性,並且它不會阻止未來的開發者在使用該屬性的該文件中添加另一類型或另一類型的擴展。
相關問題
- 1. 其他組件,屬性擴展Enum
- 2. 用其他擴展名使用C#打開一個文件
- 3. 帶有其他「dll」擴展名的文件的LoadLibrary
- 4. 可以使用org.eclipse.core.variables ...定義其他擴展的屬性
- 5. 屬性文件可以有任何文件擴展名
- 6. 不推薦使用NSOpenPanel的文件名屬性,還有什麼其他用途?
- 7. XMLWriter使用zdef擴展屬性名稱?
- 8. Swift 3從擴展中訪問結構中的私有屬性
- 9. 如何保持私有屬性的可擴展性?
- 10. 在沒有Activity的其他類文件中使用Toast擴展Android
- 11. 使用Powershell比較具有不同擴展名的文件名
- 12. 如何使用其他屬性和方法在C#中擴展DataRow和DataTable?
- 13. 如何在Launch4j配置文件中使用屬性擴展
- 14. 從文件中獲取擴展屬性
- 15. 使用其擴展名刪除所有文件
- 16. 在Excel中使用VBA的.PDF(文件)的擴展文件屬性
- 17. Django的擴展用戶模型中沒有擴展屬性
- 18. 在init中設置屬性,在swift中有擴展名?
- 19. 使包含擴展名的文件名不顯示在URL中?
- 20. 寫擴展的文件屬性
- 21. 上傳文件名不能擴展名不能保存文件名php php 2.5.5
- 22. Tomcat不擴展ROOT.war,但擴展所有其他戰爭
- 23. iOS:將使用[UIImage -imageNamed:]沒有文件擴展名導致性能問題?
- 24. nginx:php文件擴展名不能與try_files一起使用
- 25. 如何修改C#中沒有擴展名的文件的屬性?
- 26. 類擴展SKScene但不能訪問其屬性
- 27. 如何編寫取決於其他擴展名的php擴展?
- 28. Java屬性文件,其中屬性名後綴有整數值
- 29. 使用loadXMLDoc打開具有不同擴展名的xml文件
- 30. 文件擴展名在使用動作屬性時更改爲「.jsf」
您是否嘗試過使用'fileprivate'而不是'private'? – thedjnivek
@thedjnivek'我的擴展名在另一個文件中。' – nhgrif
你確定在Swift 2中工作過? Swift 2中的「private」限制對*相同源文件*的訪問。 –