Module: Fear::Option
Overview
Represents optional values. Instances of Option are either an instance of Some or the object None.
This allows for sophisticated chaining of Option values without having to check for the existence of a value.
Defined Under Namespace
Modules: Mixin
Instance Method Summary collapse
-
#any? {|value| ... } ⇒ Boolean
Returns
falseifNoneor returns the result of the application of the given predicate to theSomevalue. -
#each {|value| ... } ⇒ Option
Performs the given block if this is a
Some. -
#empty? ⇒ Boolean
Returns
trueif theOptionisNone,falseotherwise. -
#flat_map {|value| ... } ⇒ Option
Returns the given block applied to the value from this
Someor returns this if this is aNone. -
#get ⇒ any
The
Option‘s value. -
#get_or_else(*args) ⇒ Object
Returns the value from this
Someor evaluates the given default argument if this is aNone. -
#include?(other_value) ⇒ Boolean
Returns
trueif it has an element that is equal (as determined by ==) toother_value,falseotherwise. -
#map {|value| ... } ⇒ Object
Maps the given block to the value from this
Someor returns this if this is aNone. -
#reject {|value| ... } ⇒ Option
Returns
Someif applying the predicate to thisOption‘s value returnsfalse. -
#select {|value| ... } ⇒ Option
Returns self if it is nonempty and applying the predicate to this
Option‘s value returnstrue. -
#to_a ⇒ Array
Returns an
Arraycontaining theSomevalue or an emptyArrayif this is aNone.
Instance Method Details
#any? {|value| ... } ⇒ Boolean
Returns false if None or returns the result of the application of the given predicate to the Some value.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#each {|value| ... } ⇒ Option
Performs the given block if this is a Some.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#empty? ⇒ Boolean
Returns true if the Option is None, false otherwise.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#flat_map {|value| ... } ⇒ Option
Returns the given block applied to the value from this Some or returns this if this is a None
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#get ⇒ any
Returns the Option‘s value.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#get_or_else(&default) ⇒ any #get_or_else(default) ⇒ any
Returns the value from this Some or evaluates the given default argument if this is a None.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#include?(other_value) ⇒ Boolean
Returns true if it has an element that is equal (as determined by ==) to other_value, false otherwise.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#map {|value| ... } ⇒ Object
Maps the given block to the value from this Some or returns this if this is a None
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#reject {|value| ... } ⇒ Option
Returns Some if applying the predicate to this Option‘s value returns false. Otherwise, return None.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#select {|value| ... } ⇒ Option
Returns self if it is nonempty and applying the predicate to this Option‘s value returns true. Otherwise, return None.
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |
#to_a ⇒ Array
Returns an Array containing the Some value or an empty Array if this is a None
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/fear/option.rb', line 142 module Option # @private def left_class None end # @private def right_class Some end # Include this mixin to access convenient factory methods. # @example # include Fear::Option::Mixin # # Option(17) #=> #<Fear::Some value=17> # Option(nil) #=> #<Fear::None> # Some(17) #=> #<Fear::Some value=17> # None() #=> #<Fear::None> # module Mixin # An +Option+ factory which creates +Some+ if the argument is # not +nil+, and +None+ if it is +nil+. # @param value [any] # @return [Some, None] # def Option(value) if value.nil? None() else Some(value) end end # @return [None] def None None.new end # @param value [any] except nil # @return [None] def Some(value) Some.new(value) end end end |