

5 Ruby Tips You Probably Don’t Know
source link: https://www.tuicool.com/articles/hit/maUNzmf
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.


5 Ruby Tips You Probably Don’t Know
In this article we’re going to explore the following topics:
Array Hash#default_proc HEREDOC
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 that all this default value is propagated 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
In 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 an multiple line String
syntactic sugar, then it’s possible to chain methods on it.
In this example, we remove the trailing spaces and \n
from 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
produces
false true
Voilà!
Thank you for taking the time to read this post :-)
Feel free to :clap: and share this article if it has been useful for you. :rocket:
Here is a link to my last article: The Singleton module in Ruby: part II
.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK