mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 07:08:01 +00:00
24 lines
558 B
Markdown
24 lines
558 B
Markdown
# Pass A Block To Count
|
|
|
|
Ruby's [`Enumerable`](http://ruby-doc.org/core-2.2.3/Enumerable.html) module
|
|
comes with the method `#count` for determining how many items are in an
|
|
array or hash.
|
|
|
|
```ruby
|
|
> [1,2,3].count
|
|
=> 3
|
|
> {a: 1, b: 2}.count
|
|
=> 2
|
|
```
|
|
|
|
The `#count` method has a trick up its sleeve though. It can take a block
|
|
with a predicate that returns `true` or `false`. It essentially acts like
|
|
`#select` returning the count rather than the array subset itself.
|
|
|
|
```ruby
|
|
> [1,2,3].count { |x| x.odd? }
|
|
=> 2
|
|
> {a: 1, b: 2}.count { |(x,y)| y < 0 }
|
|
=> 0
|
|
```
|