Class: Dry::Monads::Maybe::None

Inherits:
Dry::Monads::Maybe show all
Includes:
RightBiased::Left
Defined in:
lib/dry/monads/maybe.rb,
lib/dry/monads/result.rb

Overview

Represents an absence of a value, i.e. the value nil.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RightBiased::Left

#and, #apply, #bind, #deconstruct_keys, #discard, #flatten, #fmap, #tee, trace_caller, #value!, #value_or

Methods inherited from Dry::Monads::Maybe

#as_json, coerce, json_create, #monad, #none?, pure, #some?, #to_json, #to_maybe, #to_monad, to_proc

Methods included from Transformer

#fmap2, #fmap3

Constructor Details

#initialize(trace = RightBiased::Left.trace_caller) ⇒ None

Returns a new instance of None.



160
161
162
# File 'lib/dry/monads/maybe.rb', line 160

def initialize(trace = RightBiased::Left.trace_caller)
  @trace = trace
end

Instance Attribute Details

#traceString (readonly)

Line where the value was constructed

Returns:

  • (String)


158
159
160
# File 'lib/dry/monads/maybe.rb', line 158

def trace
  @trace
end

Instance Method Details

#deconstructObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Pattern matching

Examples:

case Some(:foo)
in Some(Integer) then ...
in Some(:bar) then ...
in None() then ...
end


227
228
229
# File 'lib/dry/monads/maybe.rb', line 227

def deconstruct
  EMPTY_ARRAY
end

#eql?(other) ⇒ Boolean Also known as: ==

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns:

  • (Boolean)


207
208
209
# File 'lib/dry/monads/maybe.rb', line 207

def eql?(other)
  other.is_a?(None)
end

#hashObject



213
214
215
# File 'lib/dry/monads/maybe.rb', line 213

def hash
  None.instance.object_id
end

#or(*args) ⇒ Object

If a block is given passes internal value to it and returns the result, otherwise simply returns the parameter val.

Examples:

Dry::Monads.None.or('no value') # => "no value"
Dry::Monads.None.or { Time.now } # => current time

Parameters:

  • args (Array<Object>)

    if no block given the first argument will be returned otherwise arguments will be transparently passed to the block

Returns:

  • (Object)


178
179
180
181
182
183
184
# File 'lib/dry/monads/maybe.rb', line 178

def or(*args)
  if block_given?
    yield(*args)
  else
    args[0]
  end
end

#or_fmap(*args, &block) ⇒ Maybe::Some, Maybe::None

A lifted version of #or. Applies Maybe.coerce to the passed value or to the block result.

Examples:

Dry::Monads.None.or_fmap('no value') # => Some("no value")
Dry::Monads.None.or_fmap { Time.now } # => Some(current time)

Parameters:

  • args (Array<Object>)

    arguments will be passed to the underlying #or call

Returns:

  • (Maybe::Some, Maybe::None)

    Lifted #or result, i.e. nil will be mapped to None, other values will be wrapped with Some



196
197
198
# File 'lib/dry/monads/maybe.rb', line 196

def or_fmap(*args, &block)
  Maybe.coerce(self.or(*args, &block))
end

#to_result(fail = Unit, &block) ⇒ Failure<Any>

Converts to Failure(fallback_value)

Parameters:

  • fail (#call) (defaults to: Unit)

    Fallback value

  • block (Proc)

    Fallback block

Returns:



400
401
402
403
404
405
406
# File 'lib/dry/monads/result.rb', line 400

def to_result(fail = Unit, &block)
  if block_given?
    Result::Failure.new(yield)
  else
    Result::Failure.new(fail)
  end
end

#to_sString Also known as: inspect

Returns:

  • (String)


201
202
203
# File 'lib/dry/monads/maybe.rb', line 201

def to_s
  'None'
end