<div dir="ltr">I think you’ll have to write this functionality yourself.<div><br></div><div>If you start with one range and remove from it everything in another range, you will end up with either:</div><div><br></div><div>i) An empty range, if the first is entirely within the second.</div><div>ii) A single range, which might be closed, open, or half-open on either end.</div><div>iii) Two ranges, if the second is entirely within the first.</div><div><br></div><div>Of course, the built-in range types don’t cover all the possible opennesses. So you probably want to do something like the following:</div><div><br></div><div>• Create your own range type (or types) to handle the various open/closed possibilities.</div><div>• Create your own “collection of ranges” type (probably implemented with an array of ranges).</div><div>• Write methods to handle combining and subtracting ranges and collections thereof.</div><div><br></div><div>You should end up with something whereby subtracting one range from another creates a collection of ranges, and adding a range to a collection merges together any ranges that now overlap (keeping the ranges in the collection disjoint means you can keep the array sorted in the natural manner).</div><div><br></div><div>Nevin</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 20, 2017 at 4:09 PM, Седых Александр via swift-users <span dir="ltr">&lt;<a href="mailto:swift-users@swift.org" target="_blank">swift-users@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">
<div>Hello.<br>I try to get difference between two ranges. For instance I have to know how many meters from me to target who have own size (or range).<br><br><p style="margin-bottom:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo"><span style="color:#ba2da2">let</span> range = <span style="color:#272ad8">0</span>...<span style="color:#272ad8">5</span></p><p style="margin-bottom:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo"><span style="color:#ba2da2">let</span> meFromPoint = <span style="color:#272ad8">0</span>...<span style="color:#272ad8">10</span></p><p style="margin-bottom:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica;min-height:14px"> </p><p style="margin-bottom:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo"><span style="color:#ba2da2">let</span> setRange = <span style="color:#703daa">Set</span>(<span style="color:#4f8187">range</span>)</p><p style="margin-bottom:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo"><span style="color:#ba2da2">let</span> setMeFromPoint = <span style="color:#703daa">Set</span>(<span style="color:#4f8187">meFromPoint</span>)</p><p style="margin-bottom:0px;font-stretch:normal;font-size:12px;line-height:normal;font-family:Helvetica;min-height:14px"> </p><p style="margin-bottom:0px;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:#4f8187"><span style="color:#ba2da2">let</span><span style="color:#000000"> diff = </span>setMeFromPoint<span style="color:#000000">.</span><span style="color:#3e1e81">subtracting</span><span style="color:#000000">(</span>set<wbr>Range<span style="color:#000000">).</span><span style="color:#703daa">count</span><span style="color:#008400">// result 5</span></p><br>I found that operation Set(0...veryBigInt) may be slow.<br>Is exist some native way to get difference between two Ranges?<br><br><br>-- <br>Седых Александр</div>
</div></div><br>______________________________<wbr>_________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" rel="noreferrer" target="_blank">https://lists.swift.org/<wbr>mailman/listinfo/swift-users</a><br>
<br></blockquote></div><br></div>