From 8321952537cbc950418e300fbbe4dc5a7221b6df Mon Sep 17 00:00:00 2001 From: jbranchaud Date: Thu, 13 Aug 2015 17:11:22 -0500 Subject: [PATCH] Add Hash Slicing as a rails til. --- README.md | 1 + rails/hash-slicing.md | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 rails/hash-slicing.md diff --git a/README.md b/README.md index 78057d6..64c2f9e 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,7 @@ smart people at [Hashrocket](http://hashrocket.com/). - [Code Statistics For An Application](rails/code-statistics-for-an-application.md) - [Conditional Class Selectors in Haml](rails/conditional-class-selectors-in-haml.md) - [Creating Records of Has_One Associations](rails/creating-records-of-has-one-associations.md) +- [Hash Slicing](rails/hash-slicing.md) - [Ignore Poltergeist JavaScript Errors](rails/ignore-poltergeist-javascript-errors.md) - [Pretend Generations](rails/pretend-generations.md) - [Retrieve An Object If It Exists](rails/retrieve-an-object-if-it-exists.md) diff --git a/rails/hash-slicing.md b/rails/hash-slicing.md new file mode 100644 index 0000000..6e7cb26 --- /dev/null +++ b/rails/hash-slicing.md @@ -0,0 +1,21 @@ +# Hash Slicing + +Rails' ActiveSupport adds +[`#slice`](http://api.rubyonrails.org/classes/Hash.html#method-i-slice) and +[`#slice!`](http://api.rubyonrails.org/classes/Hash.html#method-i-slice-21) +to the `Hash` class. The interface of these two methods seems a little +inconsistent though. + +```ruby +> {a: 1, b: 2, c: 3}.slice(:a) +=> {:a=>1} +``` + +The `#slice` method returns what is being sliced. + +```ruby +> {a: 1, b: 2, c: 3}.slice!(:a) +=> {:b=>2, :c=>3} +``` + +The `#slice!` method, on the other hand, returns what is being excluded.