Last active
June 6, 2019 20:08
-
-
Save stevenbarragan/5f51040edeb924e5679c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Base | |
attr_reader :value | |
def initialize(value) | |
@value = value | |
end | |
end | |
class Number < Base | |
def plus | |
Plus.new @value | |
end | |
def minus | |
Minus.new @value | |
end | |
def equals | |
@value | |
end | |
end | |
class BaseOperator < Base | |
def one | |
operation(1) | |
end | |
def two | |
operation(2) | |
end | |
end | |
class Minus < BaseOperator | |
def operation(number) | |
Number.new(@value - number) | |
end | |
end | |
class Plus < BaseOperator | |
def operation(number) | |
Number.new(@value + number) | |
end | |
end | |
one = Number.new 1 | |
puts one.plus.two.plus.one.minus.two.equals # 2 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment