Thanks guys - I always learn something new from these threads.
> On 17 Mar 2019, at 06:56, Richard O'Keefe <rao...@gmail.com> wrote:
>
> (1) As it happens, my Smalltalk library *does* have
> #excludes: and #identityExcludes:
> (2) The definitions are trivial.
> excludes: item
> ^(self includes: item) not
> identityExcludes: item
> ^(self identityIncludes: item) not
>
> If you want to execute aBlock when aString is not all zeros
> and ones, just do
> (aString allSatisfy: [:each | each = $0 or: [each = $1]])
> ifFalse: [aBlock value].
> or
> (aString anySatisfy: [:each | each ~= $0 and: [each ~= $1]])
> ifTrue: [aBlock value].
> or
> ('01' includesAll: aString) ifFalse: [aBlock value].
>
>
> On Sat, 16 Mar 2019 at 11:33, Tim Mackinnon <tim@testit.works> wrote:
> Hi - in my quest to understand the edgier details of Pharo (and Smalltalk) -
> and driven by fresh thoughts of completing exercism exercises - I was
> surprised to find that there is no #excludes: operation on collection to
> mirror the #includes: operation?
>
> I was curious about this - its seems a strange omission?
>
> Of course I can inverse it with not, or do things a different way - but we
> have ifTrue: mirrored with ifFalse, empty/notEmpty so am I missing something?
>
> I wanted to write something like
>
>
> aString detect: [:c | ($0 to: $1) excludes: c] ifFound: aBlock. (Evaluate a
> block if the string isn’t all 0 and 1’s)
>
>
> Of course I can write this as:
>
> (aString reject: [:c | c = $0 | c = $1)) ifNotEmpty: aBlock
>
> But as recent messages in this vein have shown me (and taught me lots -
> thanks to those answering), the answer is often not what I thought.
>
> Tim
>
>