initialization - What's the use of expression.init() in Swift -
the swift programming language guide, page language reference -> expressions, section postfix expressions -> initializer expression talks syntax
<expression>.init(<initializer arguments>) when use (apart self.init() , super.init() covered in other parts of grammar)? seems me in case above expression valid (and expression not self or super), can do:
<expression>(<initializer arguments>)
while syntax template looks this:
<expression>.init(<initializer arguments>) the grammar defines initializer-expression as:
initializer-expression → postfix-expression . init note invocation arguments not included. matches constructs a.init, , necessary because init keyword, a.init not match explicit-member-expression (which requires identifier rather keyword member name).
initializer expressions part of grammar because can invoke initializer belongs class not direct superclass of class writing (c invokes a.init in example):
class { var property: string init() { property = "hello" } } class b: { init() { super.init() property = "goodbye" } } class c: b { init() { super.init() a.init() } } c().property // "hello" i don't think there many use cases this, both grammar , compiler allow , example compiles , runs correctly.
you can use initializer expression in global scope normal initializer. following 2 lines equivalent:
string(10) string.init(10)
Comments
Post a Comment