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 valueHEREDOC
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 the Array Destructuring
mechanism 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 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 Hash.new
method
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
variable.
When 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 layers
hash.
It’s 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 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
of an SQL query
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.
SOURCE : github & https://medium.com/rubycademy/5-ruby-tips-you-probably-dont-know-76fee34cfd0c
Image source : codecondo.com