1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 15:18:01 +00:00

Add If You Detect None as a ruby til

This commit is contained in:
jbranchaud
2016-02-04 19:35:56 -06:00
parent a9ae2fab69
commit c50dca3c54
2 changed files with 34 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
# If You Detect None
The
[`Enumerable#detect`](http://ruby-doc.org/core-2.2.3/Enumerable.html#method-i-detect)
method, which is synonymous with `#find`, can be given an optional argument,
`ifnone`, that is called when nothing in the array meets the conditional in
the block. Though I am not sure how this is practically useful and cannot
find an example of it in use, this contrived example illustrates how it
works.
```ruby
# without the fallback behavior
> [2,4,6,8].detect { |x| x.odd? }
=> nil
# with a proc as an argument
> [2,4,6,8].detect(->{0}) { |x| x.odd? }
=> 0
```
The last example can also be written as:
```ruby
> [2,4,6,8].detect(->{0}, &:odd?)
=> 0
```
And if you want to be really explicit:
```ruby
> [2,4,6,8].detect(ifnone=->{0}, &:odd?)
=> 0
```