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.

> 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

Last updated