Size: a a a

2018 December 30

ДР

Денис Рубцов... in SwiftBook
Спасибо
источник

ДР

Денис Рубцов... in SwiftBook
Поясните пож, второй пункт отсюда. Не очень понятна причина такого требования.

The only complication is when working with init(), which has some strict rules.
Specifically:
• If you create a class using inheritance, you must call  super.init() in the child class to allow the parent to construct itself.
• Your subclass must have initialized its own properties fully before calling super.init().
• You can't touch properties from your parent class until you have called super.init().
• You can't call any other methods until you have initialized all your properties, including calling super.init().
источник

ДР

Денис Рубцов... in SwiftBook
Нет. ЗачеМ требуется инициализировать сначала все свойства дочернего класса перед вызовом инициализатора родителя
источник

ДР

Денис Рубцов... in SwiftBook
class A { }
class B: A {
var age: Int
init(age: Int) {
    self.age = age
    super.init()
}

Что изменится если я задам значение age после вызова super.init? Имхо, ничего.
источник

👺

👺 in SwiftBook
Ты какой то дурачок. Не позорься
источник

ДР

Денис Рубцов... in SwiftBook
Звучит логично, а где про это детально почитать?
источник

ДР

Денис Рубцов... in SwiftBook
Немного странно. Про создании подкласса все типы известны, выделить нужное количество памяти не представляет проблемы и не нужно ее обязательно инициализировать.
источник

ДР

Денис Рубцов... in SwiftBook
Я англ понимаю, оф мануал читал
источник

ДР

Денис Рубцов... in SwiftBook
А что за книга.
В оф мануале там где описывается двухфазная инициализация - есть про это, ща перечитаю.
источник

ДР

Денис Рубцов... in SwiftBook
О, Нойбург! Спасибо-спасибо, погрызу.
источник

ДР

Денис Рубцов... in SwiftBook
Согласен, да.
источник

VP

Vladimir Pchelyakov in SwiftBook
Лучшая книга!
источник

VP

Vladimir Pchelyakov in SwiftBook
Если ее осилить уже будет очень круто
источник

ДР

Денис Рубцов... in SwiftBook
Спасибо, отличный подарок на НГ!
источник

A

Artur in SwiftBook
Денис Рубцов
class A { }
class B: A {
var age: Int
init(age: Int) {
    self.age = age
    super.init()
}

Что изменится если я задам значение age после вызова super.init? Имхо, ничего.
как я понял, если у тебя в классе А, например будет функция использующая его параметры, например принт нэйм или дескрипшион, то при создании субкласса и инициализации супера первым в подклассе сработает функция с параметрами суперкласса, а тебе возможно нужно чтобы она была обновлена согласно параметрам субкласса
источник

ДР

Денис Рубцов... in SwiftBook
+++
Не только потому что устарело
Но и потому что переводят термины
источник

ДР

Денис Рубцов... in SwiftBook
Ну а как перевести failable
проваливающийся инициализатор?
Ну фу же
источник

ДР

Денис Рубцов... in SwiftBook
[Ивана нет?]
Да фигня
И годится только для тех кто не может читать в оригинале. Как суррогат.
Это не значит что переводчик глуп или не годен
Просто специфика профессии такова что знание языка обязательно
источник

A

Artur in SwiftBook
Денис Рубцов
А что за книга.
В оф мануале там где описывается двухфазная инициализация - есть про это, ща перечитаю.
class Shape {
   var name: String
   var sides : Int
   init(sides:Int, named: String) {
       self.sides = sides
       self.name = named
       printShapeDescription()
   }
   func printShapeDescription() {
       print("Shape Name :\(self.name)")
       print("Sides :\(self.sides)")
   }
}

class Triangle: Shape {
   var hypotenuse: Int
   init(hypotenuse:Int) {
       self.hypotenuse = hypotenuse
       super.init(sides: 3, named: "Triangle")
   }
   
   override func printShapeDescription() {
       super.printShapeDescription()
       print("Hypotenuse :\(self.hypotenuse)")
   }
}
источник

ДР

Денис Рубцов... in SwiftBook
Artur
class Shape {
   var name: String
   var sides : Int
   init(sides:Int, named: String) {
       self.sides = sides
       self.name = named
       printShapeDescription()
   }
   func printShapeDescription() {
       print("Shape Name :\(self.name)")
       print("Sides :\(self.sides)")
   }
}

class Triangle: Shape {
   var hypotenuse: Int
   init(hypotenuse:Int) {
       self.hypotenuse = hypotenuse
       super.init(sides: 3, named: "Triangle")
   }
   
   override func printShapeDescription() {
       super.printShapeDescription()
       print("Hypotenuse :\(self.hypotenuse)")
   }
}
Да, спасибо, я уже посмотрел, понял что к чему.
источник