Issue #8827 has been updated by sawa (Tsuyoshi Sawada).


charliesome, that has the same problem as nobu's. It does not return the final result. It gives back the receiver.
----------------------------------------
Feature #8827: A method that flips the receiver and the first argument
https://bugs.ruby-lang.org/issues/8827#change-41386

Author: sawa (Tsuyoshi Sawada)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


=begin
If it often happens that we need to pass to a method an argument that is the result of a long chain of operations:

    Hash[some_chain_of_operations_that_ends_up_with_an_array]

    File.read(some_chain_of_operations_that_ends_up_with_a_string)

    YAML.dump(some_chain_of_operations_that_ends_up_with_an_object)

    ...

I believe one basic tenet of Ruby is to encourage method chaining, but that practice is discouraged in the examples above. It would be convenient if there is a method (let us call this `Object#flip`) that flips the receiver and the first argument and sends the method so that the examples above can be written as follows:

    some_chain_of_operations_that_ends_up_with_an_array.flip(Hash, :[])

    some_chain_of_operations_that_ends_up_with_a_string.flip(File, :read)

    some_chain_of_operations_that_ends_up_with_an_object.flip(YAML, :dump)

    ...

The implementation in Ruby may be as follows:

    class Object
      def flip receiver, method, *rest, &pr
        receiver.send(method, self, *rest, &pr)
      end
    end

It would be good if we can have that as a built-in Ruby method.

=end


-- 
http://bugs.ruby-lang.org/