class Danom::Default
A default “monad”. Not technically a monad as it take two values.
Public Class Methods
new(fallback, value)
click to toggle source
@param fallback [Object] The value on which to fallback if the doesn't
satisfy Just(value)
@param value [Object]
Calls superclass method
# File lib/danom/default.rb, line 9 def initialize(fallback, value) @fallback = Just.new(fallback).value super(value) end
Public Instance Methods
and_then(&block)
click to toggle source
Allows chaining on nil values with a fallback
@note The fallback does not get the transformations
@example
d = Default('Missing name', nil) d = d.upcase.split.join #=> Danom::Default name = ~d # 'Missing name' d = Default('Missing name', 'Uri') d = d.upcase #=> Danom::Default name = ~d # 'URI'
Default
can be combined with a maybe. Extracting the value is recursive and will never return another monad.
@example Combining with a Maybe
m = Maybe(nil) d = Default('No name', m) #=> Danom::Default name = ~d #=> 'No name'
@see Danom::Monad#method_missing
# File lib/danom/default.rb, line 41 def and_then &block if @value == nil Default.new @fallback, nil else Default.new @fallback, block.call(@value) end end
monad_value()
click to toggle source
@override
Calls superclass method
# File lib/danom/default.rb, line 15 def monad_value super || @fallback end