Skip to content
/ Values Public
forked from tcrayford/Values

Simple immutable value objects for ruby

License

Notifications You must be signed in to change notification settings

abyx/Values

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Values is a tiny library for creating value objects in ruby. These mostly look like classes created using Struct, but fix two problems with those:

  • Struct constructors can take less than the default number of arguments and set other fields as nil: Point = Struct.new(:x,:y) Point.new(1) => #

  • Structs are also mutable: Point = Struct.new(:x,:y) p = Point.new(1,2) p.x = 2 p.x => 2

Values fixes both of these: Point = Value.new(:x, :y) Point.new(1) => ArgumentError: wrong number of arguments, 1 for 2 from /Users/tcrayford/Projects/ruby/values/lib/values.rb:7:in block (2 levels) in new from (irb):5:in new from (irb):5 from /usr/local/bin/irb:12:in

p = Point.new(1,2)
p.x = 1
=> NoMethodError: undefined method x= for #<Point:0x00000100943788 @x=0, @y=1>
from (irb):6
from /usr/local/bin/irb:12:in <main>

Value does NOT have all the features of Struct (nor is it meant to).

About

Simple immutable value objects for ruby

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%