Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. User = Struct.new(:name, :age, :profession)
  2.  
  3. class MonoidBuilder
  4. def initialize(name: nil, age: nil, profession: nil)
  5. @name = name
  6. @age = age
  7. @profession = profession
  8. end
  9.  
  10. def self.empty
  11. new
  12. end
  13.  
  14. def +(other)
  15. self.class.new(
  16. name: other.name || name,
  17. age: other.age || age,
  18. profession: other.profession || profession
  19. )
  20. end
  21.  
  22. def set_name(name)
  23. self + MonoidBuilder.new(name: name)
  24. end
  25.  
  26. def set_age(age)
  27. self + MonoidBuilder.new(age: age)
  28. end
  29.  
  30. def set_profession(profession)
  31. self + MonoidBuilder.new(profession: profession)
  32. end
  33.  
  34. def == (other)
  35. name == other.name &&
  36. age == other.age &&
  37. profession == other.profession
  38. end
  39.  
  40. def build
  41. User.new(name, age, profession)
  42. end
  43.  
  44. protected
  45.  
  46. attr_reader :name, :age, :profession
  47. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement