<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">(I am not sure if I should tag this subject with [pitch]? )&nbsp;</div><div class=""><br class=""></div><div class="">Please don’t worry , I am not attempting to start a new</div><div class="">and infinite thread about whether or not the way scope</div><div class="">is handled in Swift is imho correct or not.</div><div class="">Errhm well, apart from that “protected” is missing,</div><div class="">but please let us not start again.. :o)&nbsp;</div><div class=""><br class=""></div><div class="">No, it is more or less a convenience solution to</div><div class="">prevent unnecessary wear and tear to the following keys</div><div class="">on my keyboard: [ A,E, I, P, &nbsp;R, T, V]</div><div class=""><br class=""></div><div class="">I prefer it, not to expose those class or struct members</div><div class="">which should not be accessible outside the class or struct</div><div class=""><br class=""></div><div class="">Currently, to prevent access to private Items,</div><div class="">I have to type the word “private” too many times:</div><div class=""><br class=""></div><div class=""><div class="">class &nbsp;House</div><div class="">{</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; private var rooms = 5</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>private var roofTiles = 11201</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>private let paint = &nbsp; UIColor.Blue;</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; private var yearTax: Money = “323,56"</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; private let garageVolume = 60.0</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; init(..) {.. }</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private func calculateTax() {...}</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;public func roomsUnoccupied() -&gt; Int {…}</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; func roofData(……) {…}</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;private func &nbsp;a{…}&nbsp;</div><div class="">}</div><div class=""><br class=""></div><div class="">To set the scope of a list of members I suggest the</div><div class="">“in-line scope modifiers” &nbsp;(anyone with a better name for it?)&nbsp;</div><div class=""><br class=""></div><div class="">For example if one has a source line containing the word</div><div class="">“private:” then all the following member declarations will</div><div class="">be “private” until another inline scope modifier is encountered</div><div class="">with one “default scope” to escape from it. like in the following example”</div><div class=""><br class=""></div><div class="">The compiler can detect that it is an inline scope modifier, because it ends with a colon</div><div class=""><br class=""></div><div class="">“Normal” scope modifiers, that is the ones which precede the member’s name&nbsp;</div><div class="">directly should imho not be allowed within such a scope block.</div><div class="">unless they would override for that specific item, but that looks ugly.&nbsp;</div><div class=""><br class=""></div><div class="">getter &amp; setters and init should appear in default scope</div><div class="">(or with no in-line scope modifiers)</div><div class=""><br class=""></div><div class="">Inline scope modifiers can be specified as often as</div><div class="">desired and in arbitrary sequence.&nbsp;</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><div class="">class &nbsp;House</div><div class="">{</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>&nbsp; &nbsp;init(..) {.. } &nbsp; &nbsp;</div><div class="">&nbsp; &nbsp; private: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// &lt;—— &nbsp;In-line scope modifier all following declarations are private here.</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;var rooms = 5</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>&nbsp; &nbsp; var&nbsp;roofTiles = 11201</div><div class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>&nbsp; &nbsp; let paint = &nbsp; UIColor.Blue;</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var yearTax: Money = “323,56"</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; func calculateTax() {…}</div><div class=""><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;func &nbsp;a{…}&nbsp;</div></div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; public: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &lt;—— &nbsp;In-line scope modifier</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;var garageVolume = 60.0 &nbsp; &nbsp; &nbsp;</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;func roomsUnoccupied() -&gt; Int {…}</div><div class=""><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;func roofData(……) {…}</div></div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; defaultscope: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // &lt;—— Return to default scope (only needed when preceding inline scope modifiers are present. )</div><div class=""><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div></div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; func sellHouse(buyer: CustomerID) &nbsp;&nbsp;</div><div class="">}</div><div class=""><br class=""></div><div class="">See? looks a lot better, don’t you think so? &nbsp;</div><div class=""><div class="">it also makes sources more readable because one can&nbsp;</div><div class="">now conveniently group items.</div></div><div class=""><br class=""></div><div class="">100% source compatible with whatever scope&nbsp;</div><div class="">mechanism now or in the future is or will be deployed.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">(The idea is not exactly new, a similar construct is available in Object Pascal.) &nbsp;</div><div class=""><br class=""></div><div class="">?</div><div class=""><br class=""></div><div class="">Kind Regards</div><div class="">TedvG</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div></div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">&nbsp;</div></body></html>