5 Ruby Tips You Probably Don’t Know

Tech - RubyCademy
RubyCademy
Published in
2 min readOct 2, 2018

--

In this article we’re going to explore the following topics:

  • assigning the rest of an Array to a variable
  • array destructuring in block arguments
  • Hash#default_proc as default value
  • HEREDOC and method chaining
  • unary operators for non-numeric objects

Assigning the rest of an Array to a variable

When destructuring an array, you can unpack and assign the remaining part of it to a variable using the rest pattern

Array destructuring in block arguments

It’s possible to use Array Destructuring in ruby blocks

produces

key1: value1
key2: value2
key3: value3
key4: value4

Here, each sub-array is destructured and the first and second entry values are assigned to the key and value block arguments.

Hash#default_proc as default value

A Hash.new can take a block that will be used to set the default value of a key

But what if we want to propagate this default value through all the entries and subentries of a hash?

It’s possible to propagate the default block passed as an argument of the Hash.new method to all the sub-entries of the freshly returned hash.

To do so we can use Hash#default_proc that contains the block passed as an argument of the Hash.new method

Here, a new hash that takes a block as an argument — which is used to define the default value of a new entry — is assigned to the layers variable.

When layers[:layer_1] is called without an explicit assignment, then the block passed as an argument of the layers hash is executed.

This block is executed as following

In effect, the default_proc executes the block passed as an argument of the layers hash.

It’s the same for the layers[:layer_1][:layer_2].

And then the layers[:layer_1][:layer_2][:layer_3] contains an assigned value. So the default_proc method is not called.

The default_proc method of the layers hash is propagated as the default value of any new entries and sub-entries of this hash.

Inception…

HEREDOC and method chaining

As an HEREDOC is a multi-line string syntactic sugar, then it’s possible to chain methods on it.

In this example, we remove the trailing spaces and \n for a SQL query

Note that the squish method is defined within the Rails framework.

Unary operators for non-numeric objects

It’s possible to implement unary operators to an object by defining the -@ and +@ methods within the class declaration

produces

false
true

Ruby Mastery

We’re currently finalizing our first online course: Ruby Mastery.

Join the list for an exclusive release alert! 🔔

🔗 Ruby Mastery by RubyCademy

Also, you can follow us on x.com as we’re very active on this platform. Indeed, we post elaborate code examples every day.

💚

--

--