Frozen Objects
frozen-objects provides some syntactic sugar of implicitly frozen objects and an freezing operator useful for example in class constants.
require "frozen-objects"
class Foo
SOME_ARRAY = Frozen::Array[:a, :b] # or any other Array constructing methods
SOME_HASH = Frozen::Hash[:a => :b] # or any other Hash constructing methods
SOME_STRING = Frozen::String::new("bar")
end
Foo::SOME_ARRAY.frozen? # will return true
Foo::SOME_HASH.frozen? # will return true
Foo::SOME_STRING.frozen? # will return true
All attempts to modify these objects will fail on RuntimeError
.
Objects are reported as frozen of sure. From other points of view they
are "normal" and fully compatible with Ruby implicitly
non-frozen objects.
Freezing Operator
Frozen
module defines also frozen operator. It's intended for nice
and simple freezing whatever. Consider example above:
require "frozen-objects"
class Foo
SOME_ARRAY = Frozen << [:a, :b]
SOME_HASH = Frozen << {:a => :b}
SOME_STRING = Frozen << "bar"
WHATEVER = Frozen << SomeClass::new
end
Both methods are equivalent. Select that one which is suitable for you.
Contributing
- Fork it.
- Create a branch (
git checkout -b 20101220-my-change
). - Commit your changes (
git commit -am "Added something"
). - Push to the branch (
git push origin 20101220-my-change
). - Create an Issue with a link to your branch.
- Enjoy a refreshing Diet Coke and wait.
Copyright
Copyright © 2011 Martin Kozák. See LICENSE.txt
for
further details.