Skip to content

5 Ruby Tips You Probably Don’t Know

    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 the Array Destructuring mechanism in ruby blocks.


    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 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 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 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.


    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 &

    Image source :