In this article we’re going to explore the following topics:
- assigning the rest of an
Arrayto a variable
- array destructuring in block arguments
Hash#default_procas default value
HEREDOCand 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 the
Array Destructuring mechanism in ruby blocks.
Here, each sub-array is destructured and the first and second entry values are assigned to the
value block arguments.
Hash#default_proc as default value
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 argument of the
Hash.new method to all the sub-entries of the freshly returned hash.
To do so we can use the
Hash#default_proc method that contains the block passed as argument of the
Here, a new hash that takes a block as argument — which is used to define the default value of a new entry — is assigned to the
layers[:layer_1] is called without an explicit assignment, then the block passed as argument of the
layers hash is executed.
This block is executed as following
n effect, the
default_proc executes the block passed as parameter of the
It’s same for the
And then the
layers[:layer_1][:layer_2][:layer_3] contains an assigned value. So the
default_proc method is not called.
default_proc method of the
layers hash is propagated as default value of any new entries and sub-entries of this hash.
HEREDOC and method chaining
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 of an SQL query
Unary operators for non-numeric objects
It’s possible to implement unary operators to an object by defining the
+@ methods within the class declaration.
SOURCE : github & https://medium.com/rubycademy/5-ruby-tips-you-probably-dont-know-76fee34cfd0c
Image source : codecondo.com