Agree: toggle makes the most sense to me as well.<br><div class="gmail_quote"><div dir="ltr">On Fri, Jan 12, 2018 at 06:14 David Hart via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word;line-break:after-white-space"><br><div><br><blockquote type="cite"><div>On 12 Jan 2018, at 07:15, Chris Eidhof via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt; wrote:</div><br class="m_-6727569567177246379Apple-interchange-newline"><div><div dir="ltr"><div><div>Hey SE!</div><div><br></div><div>When we have a bunch of nested structs:</div><div><br></div><div>    struct Sample {</div><div>        var bar: Bar</div><div>    }</div><div>    </div><div>    struct Bar {</div><div>        var show: Bool</div><div>    }</div><div>    </div><div>    var foo = Sample(bar: Bar(show: false))</div><div><br></div><div>It can be repetitive to toggle a deeply nested boolean:</div><div><br></div><div>    foo.bar.show = !foo.bar.show // duplication</div><div><br></div><div>I sometimes add a `toggle` extension on `Bool`</div><div><br></div><div>    extension Bool {</div><div>        mutating func toggle() {</div><div>            self = !self</div><div>        }</div><div>    }</div><div><br></div><div>This allows you to write the same code without duplication, and makes the intent clearer:</div><div><br></div><div>    foo.bar.show.toggle()</div><div><br></div><div>In other languages, I don&#39;t think the `toggle` would make as much sense, but the mutable self makes this very useful.</div><div><br></div><div>After I posted it on Twitter, it turns out I&#39;m not the only one: <a href="https://twitter.com/PublicExtension/status/730434956376346624" target="_blank">https://twitter.com/PublicExtension/status/730434956376346624</a></div><div><br></div><div>I would have gone straight to a proposal, but I think we can do some bikeshedding about the name of `toggle`?</div></div></div></div></blockquote><br></div></div><div style="word-wrap:break-word;line-break:after-white-space"><div>Out of all the versions I heard, toggle is the one that makes the most sense to me.</div></div><div style="word-wrap:break-word;line-break:after-white-space"><div><br></div><div><blockquote type="cite"><div><div dir="ltr">-- <br><div class="m_-6727569567177246379gmail_signature">Chris Eidhof</div>
</div>
_______________________________________________<br>swift-evolution mailing list<br><a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br></div></blockquote></div><br></div>_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</blockquote></div>