В чем разница между "пусть" и "статическим пусть"?
class Foo {
let fooValue = 1
}
print(Foo.fooValue) // not work
class Bar {
static let barValue = 1
}
print(Bar.barValue) // work; print "1"
Зачем? Я ожидал что Foo
пример для работы, потому что значение fooValue
является константой, значение и адрес памяти известны во время компиляции. Но мне нужно использовать ключевое слово static
работать.
2 ответа
fooValue
это свойство экземпляра. Там один отдельный fooValue
за каждый экземпляр (объект) Foo
учебный класс.
barValue
является статическим свойством. Там один поделился barValue
что принадлежит классу.
Вот более конкретный пример. Предположим, у меня был этот класс:
class Human {
static let numberOfLimbs = 4
let name: String
}
Что бы вы ожидали, если бы я спросил вас, как зовут Человека? Т.е. Human.name
, Ну, ты не сможешь мне ответить, потому что нет единого имени из всех людей. У каждого человека будет отдельное имя. Вы могли бы, однако, сказать мне количество конечностей людей, (Human.numberOfLimbs
), что (почти) всегда 4.
Вам не нужно создавать экземпляр своего класса для доступа к статическим свойствам
если вы хотите получить к нему доступ в вашем первом классе использования
Foo().fooValue
как правило, вы хотите использовать static для свойств, к которым вы хотите получить доступ без необходимости каждый раз создавать экземпляр объекта