Class: OverloadedMethods::FunctionDefinition
- Inherits:
-
Object
- Object
- OverloadedMethods::FunctionDefinition
- Defined in:
- lib/overloaded_methods.rb
Instance Method Summary collapse
- #default(&block) ⇒ Object
- #execute(params) ⇒ Object
-
#initialize ⇒ FunctionDefinition
constructor
A new instance of FunctionDefinition.
- #when(&predicate) ⇒ Object (also: #pattern)
Constructor Details
#initialize ⇒ FunctionDefinition
Returns a new instance of FunctionDefinition.
41 42 43 44 |
# File 'lib/overloaded_methods.rb', line 41 def initialize @clauses = [] @default = Clause.match_all.return(nil) end |
Instance Method Details
#default(&block) ⇒ Object
54 55 56 |
# File 'lib/overloaded_methods.rb', line 54 def default &block @default = Clause.match_all.do(&block) end |
#execute(params) ⇒ Object
49 50 51 52 53 |
# File 'lib/overloaded_methods.rb', line 49 def execute params [*@clauses, @default] .find { |clause| clause.match? *params } .call(*params) end |
#when(&predicate) ⇒ Object Also known as: pattern
45 46 47 |
# File 'lib/overloaded_methods.rb', line 45 def when &predicate Clause.with_predicate(predicate).tap { |clause| @clauses << clause } end |