12345678910111213141516171819202122232425262728293031 |
- #!/usr/bin/ruby
- #
- ## https://rosettacode.org/wiki/Singleton
- #
- class Singleton(name) {
- static instance;
- method new(name) {
- instance ||= Singleton.bless(Hash(name => name));
- }
- method new {
- Singleton.new(nil);
- }
- }
- var s1 = Singleton('foo');
- say s1.name; #=> 'foo'
- say s1.object_id; #=> '30424504'
- var s2 = Singleton();
- say s2.name; #=> 'foo'
- say s2.object_id; #=> '30424504'
- s2.name = 'bar'; # change name in s2
- say s1.name; #=> 'bar'
- assert_eq(s1.object_id, s2.object_id);
- assert_eq(s1.name, s2.name);
|