mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 23:28:02 +00:00
Add Pattern Matching Values From A Hash as a ruby til
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
|
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
|
||||||
|
|
||||||
_1030 TILs and counting..._
|
_1031 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -855,6 +855,7 @@ _1030 TILs and counting..._
|
|||||||
- [Pass A Block To Count](ruby/pass-a-block-to-count.md)
|
- [Pass A Block To Count](ruby/pass-a-block-to-count.md)
|
||||||
- [Passing Arbitrary Methods As Blocks](ruby/passing-arbitrary-methods-as-blocks.md)
|
- [Passing Arbitrary Methods As Blocks](ruby/passing-arbitrary-methods-as-blocks.md)
|
||||||
- [Passing Arguments To A Rake Task](ruby/passing-arguments-to-a-rake-task.md)
|
- [Passing Arguments To A Rake Task](ruby/passing-arguments-to-a-rake-task.md)
|
||||||
|
- [Pattern Match Values From A Hash](ruby/pattern-match-values-from-a-hash.md)
|
||||||
- [Percent Notation](ruby/percent-notation.md)
|
- [Percent Notation](ruby/percent-notation.md)
|
||||||
- [Question Mark Operator](ruby/question-mark-operator.md)
|
- [Question Mark Operator](ruby/question-mark-operator.md)
|
||||||
- [Rake Only Lists Tasks With Descriptions](ruby/rake-only-lists-tasks-with-descriptions.md)
|
- [Rake Only Lists Tasks With Descriptions](ruby/rake-only-lists-tasks-with-descriptions.md)
|
||||||
|
|||||||
32
ruby/pattern-match-values-from-a-hash.md
Normal file
32
ruby/pattern-match-values-from-a-hash.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Pattern Match Values From A Hash
|
||||||
|
|
||||||
|
As of Ruby 3.0.0, the _rightward assignment_ operator (`=>`) was introduced as
|
||||||
|
another syntax for assigning values to variables. With it comes an experimental
|
||||||
|
pattern matching capability. This pattern matching can be used with hashes to
|
||||||
|
extract keyed values into local variables.
|
||||||
|
|
||||||
|
Pattern matching with rightward assignment can be done by placing a hash on the
|
||||||
|
left-hand side of the `=>` operator and then placing a hash-like listing of
|
||||||
|
keys to be matched against.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
> some_hash = { name: "Josh", handle: "@jbrancha", age: :unknown }
|
||||||
|
=> {:name=>"Josh", :handle=>"@jbrancha", :age=>:unknown}
|
||||||
|
> some_hash => {name:, handle:}
|
||||||
|
(irb):3: warning: One-line pattern matching is experimental, and the behavior may change in future versions of Ruby!
|
||||||
|
=> nil
|
||||||
|
> name
|
||||||
|
=> "Josh"
|
||||||
|
> handle
|
||||||
|
=> "@jbrancha"
|
||||||
|
```
|
||||||
|
|
||||||
|
This example extracts `name` and `handle` as local variables assigned with the
|
||||||
|
values of the those keys from the hash.
|
||||||
|
|
||||||
|
Note that this feature is _experimental_.
|
||||||
|
|
||||||
|
Also note that referencing a key that doesn't exist in a pattern matching
|
||||||
|
statement will raise a `NoMatchingPatternError`.
|
||||||
|
|
||||||
|
[source](https://www.ruby-lang.org/en/news/2020/12/25/ruby-3-0-0-released/)
|
||||||
Reference in New Issue
Block a user