Page 156


result: Stmark(mark1: 3.0, mark2: 3.0)) println("student result is: \(set3.average.m1, set3.average.m2) \(set3.result.mark1, set3.result.mark2)") When we run the above program using playground, we get the following result: (0.0,0.0)


(2.0,2.0) 5.0,5.0) (2.5,2.5) (3.0,3.0)

Rules for Initializer Delegation Value Types

Class Types

Inheritance is not supported for value types like structures and enumerations. Referring other initializers is done through self.init

Inheritance is supported. Checks all stored property values are initialized

Class Inheritance and Initialization Class types have two kinds of initializers to check whether defined stored properties receive an initial value namely designated initializers and convenience initializers.

Designated Initializers and Convenience Initializers Designated Initializer

Convenience Initializer

Considered as primary initializes for a class

Considered as supporting initialize for a class

All class properties are initialized and appropriate superclass initializer are called for further initialization

Designated initializer is called with convenience initializer to create class instance for a specific use case or input value type

At least one designated initializer is defined for every class

No need to have convenience initializers compulsory defined when the class does not require initializers.

Init(parameters) { statements }

convenience init(parameters) { statements }

Program for Designated Initializers class mainClass { var no1 : Int // local storage init(no1 : Int) { self.no1 = no1 // initialization 144

​Fast is a powerful and user-friendly coding language for macOS, iOS, watchOS and tvOS....  


​Fast is a powerful and user-friendly coding language for macOS, iOS, watchOS and tvOS....