<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 do not agree about the implication. A property can be gotten, set, or both, in at least C#, where I used a ton of set-only properties.</div><div class=""><br class=""></div><div class="">Here is a large list of properties that are set-only:</div><div class=""><a href="https://developer.apple.com/library/ios/documentation/Metal/Reference/MTLRenderCommandEncoder_Ref/index.html#//apple_ref/swift/intf/c:objc(pl)MTLRenderCommandEncoder" class="">https://developer.apple.com/library/ios/documentation/Metal/Reference/MTLRenderCommandEncoder_Ref/index.html#//apple_ref/swift/intf/c:objc(pl)MTLRenderCommandEncoder</a></div><div class=""><br class=""></div><div class="">Some of them require more than a single value, for setting. Tuple assignment or named subscripts are the best way I currently know to handle that. Having them be functions that begin with “set” and take arguments feels archaic and not specific enough, to me.</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; line-height: normal;" class=""><div style="margin: 0px; line-height: normal;" class=""><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">func</span> setStencilFrontReferenceValue(frontReferenceValue: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UInt32</span>,</div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class="">&nbsp;&nbsp; backReferenceValue: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UInt32</span></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class="">)</div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class=""><div style="margin: 0px; line-height: normal; color: rgb(49, 89, 93);" class="">setStencilFrontReferenceValue<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">(</span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, backReferenceValue: </span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">1</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">)</span></div></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class=""><br class=""></div><div style="margin: 0px; line-height: normal; min-height: 16px;" class="">versus</div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;" class=""><br class=""></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">var</span> stencilReferenceValues: (front: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UInt32</span>, back: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">UInt32</span>) {set}</div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; color: rgb(79, 129, 135);" class="">stencilReferenceValues<span style="font-variant-ligatures: no-common-ligatures; color: #000000" class=""> = (front: </span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">, back: </span><span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">1</span><span style="font-variant-ligatures: no-common-ligatures; color: #000000" class="">)</span></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;" class=""><br class=""></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;" class=""><br class=""></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">func</span> setVertexSamplerState(sampler: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">MTLSamplerState</span>?, atIndex index: <span style="font-variant-ligatures: no-common-ligatures; color: #703daa" class="">Int</span>)</div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;" class=""><div style="margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #31595d" class="">setVertexSamplerState</span>(someState, atIndex <span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0</span>)</div></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;" class=""><br class=""></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;" class=""><span style="font-family: Helvetica; font-size: 12px;" class="">versus</span></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal; min-height: 16px;" class=""><br class=""></div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class=""><span style="font-variant-ligatures: no-common-ligatures; color: #bb2ca2" class="">subscript</span> vertexSamplerState(index: Int): MTLSamplerState? {set}</div><div style="font-family: Menlo; font-size: 14px; margin: 0px; line-height: normal;" class="">vertexSamplerState[<span style="font-variant-ligatures: no-common-ligatures; color: #272ad8" class="">0</span>] = someState</div><div style="font-family: Menlo; font-size: 14px;" class=""><br class=""></div></div></div></div><div class=""><br class=""></div><div class="">The former options, I feel are not Swift, but C masquerading as Swift.</div><div class=""><br class=""></div><div class=""><br class=""></div>
&gt; Cc:swift-<a href="mailto:evolution@swift.org" class="">evolution@swift.org</a><br class="">&gt; Subject:[swift-evolution] Support for pure setters<br class="">&gt; Date:February 3, 2016 at 3:31:16 PM EST<br class="">&gt; <br class="">&gt; <br class="">&gt; <br class="">&gt; &gt; On Feb 3, 2016, at 12:21 PM, Jessy Catterwaul&lt;<a href="mailto:mr.jessy@gmail.com" class="">mr.jessy@gmail.com</a>&gt;wrote:<br class="">&gt; &gt; <br class="">&gt; &gt; Joe, to attempt to set foo.x doesn’t make sense. If foo cannot be gotten, a property of it will be inaccessible for getting or setting.<br class="">&gt; &gt; <br class="">&gt; &gt; Set-only properties are always computed, and only used via assignment.<br class="">&gt; &gt; <br class="">&gt; &gt; e.g. foo = value<br class="">&gt; I understand that. If that's all you're allowed to do with a set-only property, then this is just sugar over 'setFoo(value)', and I think the sugar implies you could do more with 'foo' than you really can. I don't think it's worth the complexity.<br class="">&gt; <br class="">&gt; -Joe<br class="">&gt; <br class="">&gt; <br class="">&gt;<span class="Apple-converted-space">&nbsp;</span>

</body></html>