Прежде всего, ваш код полностью искусственный, так как он даже не будет компилироваться, кроме как на игровой площадке - а на детской площадке понятия приватности более или менее бессмысленны. Тестируйте только в рамках реального проекта.
Когда вы это сделаете, у вас будет что-то вроде этого:
private enum SomePrivateEnum {
case one
case two
case three
}
private class SomePrivateClass {
private var somePrivateProperty = 0
}
class ViewController : UIViewController {
func test() {
print(SomePrivateEnum.one)
print(SomePrivateClass().somePrivateProperty)
}
}
Теперь, когда мы установили это, мы можем перейти к тому, что не так с самим тестом, а именно к тому, что вы сравниваете яблоки с апельсинами. Вот параллелизм:
print(SomePrivateEnum.one) // ok
print(SomePrivateClass()) // ok
То есть private
для SomePrivateEnum и private
для SomePrivateClass означают одно и то же, а именно: "private в этом файле ". Этот код находится в одном и том же файле, поэтому он может видеть как SomePrivateEnum, так и SomePrivateClass. (Как показывают документы, код, который может видеть SomePrivateEnum, может видеть SomePrivateEnum.one
, и наоборот. Поэтому мы сейчас сравниваем яблоки с яблоками.)
Но private
для somePrivateProperty
означает что-то еще . Это означает "private внутри этого типа ". Так что только код внутри SomePrivateClass может видеть somePrivateProperty
. Этот код не находится внутри SomePrivateClass, поэтому он не может видеть это свойство.