method

then

Importance_2
v2_6_3 - Show latest stable - 0 notes - Class: Object
  • 1_8_6_287
  • 1_8_7_72
  • 1_8_7_330
  • 1_9_1_378
  • 1_9_2_180
  • 1_9_3_125
  • 1_9_3_392
  • 2_1_10
  • 2_2_9
  • 2_4_6
  • 2_5_5
  • 2_6_3 (0)
  • What's this?
then() public

Yields self to the block and returns the result of the block.

3.next.then {|x| x**x }.to_s             #=> "256"
"my string".yield_self {|s| s.upcase }   #=> "MY STRING"

Good usage for yield_self is value piping in method chains:

require 'open-uri'
require 'json'

construct_url(arguments).
  yield_self {|url| open(url).read }.
  yield_self {|response| JSON.parse(response) }

When called without block, the method returns Enumerator, which can be used, for example, for conditional circuit-breaking:

# meets condition, no-op
1.yield_self.detect(&:odd?)            # => 1
# does not meet condition, drop value
2.yield_self.detect(&:odd?)            # => nil
Show source
Register or log in to add new notes.