在雨燕,它是一個編譯錯誤,要做到這一點:你應該能夠在具有相同名稱的不同文件中聲明兩個私有變量嗎?
// file1.swift
private let testVar = 2
// file2.swift
private let testVar = 3
特別是,聲明人會用「的testvar的無效重複聲明」強調。
的documentation狀態,一般認爲:
私人接入限制使用的實體自身的定義源文件。使用私人訪問來隱藏特定功能的實現細節。
在討論原始值,它說:
在枚舉定義用於任何原始值或相關值類型必須具有的訪問級別至少高達枚舉的訪問級別。例如,不能將私有類型用作具有內部訪問級別的枚舉的原始值類型。
並相對於常量:
常量,變量或屬性不能比它的類型的詳細公開。例如,編寫具有私有類型的公共屬性是無效的。同樣,下標不能比其索引類型或返回類型更公開。
對我來說,沒有這些提取物的建議,你不應該能夠有private
變量在不同的文件相同的名稱。
的確,第一句話對我說,你應該能夠;否則,您正在泄漏實現細節(即,您使用名爲testVar
的變量)。
在我提交錯誤報告之前,我想檢查一下,我沒有誤解語義。 這應該可能嗎?
似乎這個裹屍布是不允許的。只是在一個不同的文件是不夠的。考慮鏈接時間。 – zaph 2014-08-27 12:27:56
@Zaph我認爲它的工作方式與C中的靜態變量相同(即不暴露給鏈接器)。看起來很奇怪,你可以通過向項目添加一個新文件來打破你的構建! – sapi 2014-08-27 12:43:37
我想這涉及私人處理。提交bug並查看響應是什麼。 – zaph 2014-08-27 12:49:11