<html><head><style>body{font-family:Helvetica,Arial;font-size:13px}</style></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Well, yes and no. A decorator receives a method and returns a new method, and it's up to implementation what will happen in the new method - it can perform some operations before calling the original method, or doing something after the original method is called, or not calling the original method at all. But a decorator must be applied to the function in compile time, so changing the behavior of functions from some library we don't have source (like UIView, in your example) wouldn't be possible.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">At least according to my original proposal. The proposal can be changed, but we need to invent some new syntax for such decorators.</div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;"><br></div><div id="bloop_customfont" style="font-family:Helvetica,Arial;font-size:13px; color: rgba(0,0,0,1.0); margin: 0px; line-height: auto;">Alex</div> <br> <div id="bloop_sign_1463408811696982016" class="bloop_sign"><div><br></div></div><p class="airmail_on">On May 16, 2016 at 16:25:08, Erica Sadun (<a href="mailto:erica@ericasadun.com">erica@ericasadun.com</a>) wrote:</p> <blockquote type="cite" class="clean_bq"><span><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div></div><div>




<title></title>


<div>
<blockquote type="cite" class="">
<div class="">On May 8, 2016, at 10:33 AM, Karl Wagner via
swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On 4 May 2016, at 00:46, Aleksandar Petrovic via
swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">Hi swift-evolution,<br class="">
<br class="">
I want to apologize in advance for my clumsy English. It's
(obviously) not my first language.<br class="">
<br class="">
Recent discussion about property behaviours reminded me of function
decorators in Python. I think decorators can nicely fit in Swift,
too.<br class="">
<br class="">
First, a bit of explanation for the uninitiated. Decorator is a
function that transform other function - it receives some function
and returns a function of the same signature. Lets make some dead
simple decorator:<br class=""></div>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
<div class=""><br class=""></div>
<div class="">
<div class="">In Objective-C, you can add a category that will
entirely replace an existing method. Could using decorators allow
us to add behaviors to methods to extend their behavior without
overwriting those methods? Here is an example of what I'm
thinking.</div>
<div class=""><br class=""></div>
<div class="">extension UIView {</div>
<div class="">&nbsp; &nbsp;decorate func somethingElse(...) {</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// performs
existing behavior of somethingElse</div>
<div class="">&nbsp; &nbsp; &nbsp; &nbsp; ... adds new behavior
...</div>
<div class="">&nbsp; &nbsp;}</div>
<div class="">}</div>
<div class=""><br class=""></div>
<div class="">Context: I was asking about whether this kind of
"extend rather than replace or subclass" behavior were possible in
Swift, and was told that "decorators" might be the right technology
to implement it.</div>
<div class=""><br class=""></div>
<div class="">Thanks in advance for any insight.</div>
<div class=""><br class=""></div>
<div class="">-- E</div>
<div class=""><br class=""></div>
<div>
<blockquote type="cite" class=""></blockquote>
</div>
</div>


</div></div></span></blockquote></body></html>