Implementation of Singleton design patter for Crystal-lang.
Add this to your application's shard.yml
:
dependencies:
singleton:
github: tbrand/crystal-singleton
require "singleton"
class Test < SingleTon
# st_type: :property, :getter or :setter
# name: whatever you like
# type: type of the property such as String, Int32 or Bool
# df: default value of each property
st_fields(
{st_type: :property, name: prop1, type: String, df: "text"},
{st_type: :getter, name: prop2, type: Int32, df: 0},
{st_type: :setter, name: prop3, type: Float64, df: 1.0}
)
end
test = Test.get_instance
a = Test.get_instance.prop1
b = Test.get_instance.prop2
test.prop1 = "ok"
test.prop3 = 2.0
Note that parent class of each singleton is Single'T'on, not Single't'on
- Fork it ( https://github.com/tbrand/crystal-singleton/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
- tbrand Taichiro Suzuki - creator, maintainer