DevPrep

Все темы › Язык Swift

Static, либо модификатор class?

Junior PRO

Суть

Оба слова объявляют член типа, а не экземпляра. Разница — в переопределении:

Внутри класса static эквивалентен final class.

class Shape {
    static let kind = "shape"             // переопределить нельзя
    class var name: String { "Shape" }    // можно override
    static func make() -> Shape { Shape() }
    // class var stored = 0   // error: class stored properties not supported
}
class Circle: Shape {
    override class var name: String { "Circle" }
    // override static func make() — error: cannot override static method
}
struct Point {
    static let zero = Point(x: 0, y: 0)   // в struct/enum — только static
    var x, y: Double
}
print(Circle.name, Shape.name, Shape.kind)   // Circle Shape shape

Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.

Полный ответ — в DevPrep

Потренируйтесь перед собеседованием

В DevPrep эти ответы превращаются в задачи на минуту: что напечатает код, найди баг, пробное собеседование. По задаче в день.

Скачать DevPrep в App Store