<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>On Sun, Dec 13, 2015, at 08:59 PM, Dave Abrahams wrote:<br></div>
<blockquote type="cite"><div><div>This is a generalization of the postincrement pattern (mutate a value and return the original) and given that we're moving away from that I'm not sure it's something we want to enshrine in the standard library.<br></div>
</div>
</blockquote><div>&nbsp;</div>
<div>It's also a generalization of Dictionary.updateValue(_:forKey:) and Dictionary.removeValueForKey(_:), and those aren't going away. Actually I'd say it's a lot more like the Dictionary methods and less like postincrement because it's not actually mutating the original value, it's simply replacing it with a new value.</div>
<div>&nbsp;</div>
<blockquote type="cite"><div><div>That said, here's a question: looking at your use cases, how many of them are using something other than nil (or some moral equivalent) as the second argument? &nbsp;If this is effectively a non-destructive move in nearly all cases, I'd rather support that more directly.<br></div>
</div>
</blockquote><div>&nbsp;</div>
<div>In my current codebase, I have 21 uses of replace(&amp;foo, with: nil) and 1 use of replace(&amp;foo, with: bar). That said, in my last big Swift project at my previous job I'm pretty sure I had more uses of replace(&amp;foo, with: bar) (but I don't have the source anymore to check).</div>
<div>&nbsp;</div>
<blockquote type="cite"><div><div>If cases other than "nondestructive move" are common <u>enough</u>, I'd consider something like this syntax instead:<br></div>
<div>&nbsp;</div>
<div>&nbsp; (task &lt;- nil).cancel()<br></div>
<div>&nbsp;</div>
<div>But I strongly suspect this isn't a common enough pattern to warrant introducing an operator.<br></div>
</div>
</blockquote><div>&nbsp;</div>
<div>Interesting idea. I'm inclined to agree that this isn't common enough to introduce an operator for.<br></div>
<div>&nbsp;</div>
<div>-Kevin Ballard</div>
</body>
</html>