Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stevenbarragan/5f51040edeb924e5679c to your computer and use it in GitHub Desktop.
Save stevenbarragan/5f51040edeb924e5679c to your computer and use it in GitHub Desktop.
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