From: "Florian Groß" Date: 2006-03-09T23:33:26+09:00 Subject: Enums (was: My Ruby talk @ work..) --------------010001010402060006070603 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Logan Capaldo wrote: > The idiom I usually use is: > class HockeyGear > Stick = Object.new > Helmet = Object.new > ...etc... > end > > Of course other than the aesthtics of looking like an enum > (HockeyGear::Stick) in the source code there's no advantage over > symbols. On the other hand, if someone is passing you an enum, it > probably means any one of the enums is valid, so you should be checking > all of them anyway, and throw an exception in the else clause. Checking > whether an object is of the right type isn't very ruby-like anyway. Hm, I wrote the attached Enum class a while ago. What do you think? -- http://flgr.0x42.net/ --------------010001010402060006070603 Content-Type: application/x-ruby; name="enum.rb" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="enum.rb" IyBSZXByZXNlbnRzIGEgQyMgc3R5bGUgZW51bWVyYXRpb24gb2Yga25vd24gdmFsdWVzLg0K Iw0KIyBVc2FnZToNCiMgICBDb2xvciA9IEVudW0ubmV3KDpSZWQsIDpHcmVlbiwgOkJsdWUp DQojICAgQ29sb3IuaXNfYT8oRW51bSkgIyA9PiB0cnVlDQojICAgQ29sb3I6OlJlZC5pbnNw ZWN0ICMgPT4gIkNvbG9yOjpSZWQiDQojICAgQ29sb3I6OkdyZWVuLmlzX2E/KENvbG9yKSAj ID0+IHRydWUNCiMgICBDb2xvcjo6R3JlZW4uaXNfYT8oRW51bTo6TWVtYmVyKSAjID0+IHRy dWUNCiMgICBDb2xvcjo6R3JlZW4uaW5kZXggIyA9PiAxDQojICAgQ29sb3I6OkJsdWUuZW51 bSAjID0+IENvbG9yDQojICAgdmFsdWVzID0gW1syNTUsIDAsIDBdLCBbMCwgMjU1LCAwXSwg WzAsIDAsIDI1NV1dDQojICAgdmFsdWVzW0NvbG9yOjpHcmVlbl0gIyA9PiBbMCwgMjU1LCAw XQ0KIyAgIENvbG9yWzBdICMgPT4gQ29sb3I6OlJlZA0KIyAgIENvbG9yLnNpemUgIyA9PiAz DQojDQojIEVudW1zIGFyZSBlbnVtZXJhYmxlLiBFbnVtOjpNZW1iZXJzIGFyZSBjb21wYXJh YmxlLg0KY2xhc3MgRW51bSA8IE1vZHVsZQ0KICBjbGFzcyBNZW1iZXIgPCBNb2R1bGUNCiAg ICBhdHRyX3JlYWRlciA6ZW51bSwgOmluZGV4DQoNCiAgICBkZWYgaW5pdGlhbGl6ZShlbnVt LCBpbmRleCkNCiAgICAgIEBlbnVtLCBAaW5kZXggPSBlbnVtLCBpbmRleA0KICAgICAgIyBB bGxvdyBDb2xvcjo6UmVkLmlzX2E/KENvbG9yKQ0KICAgICAgZXh0ZW5kIGVudW0NCiAgICBl bmQNCg0KICAgICMgQWxsb3cgdXNlIG9mIGVudW0gbWVtYmVycyBhcyBhcnJheSBpbmRpY2Vz DQogICAgYWxpYXMgOnRvX2ludCA6aW5kZXgNCiAgICBhbGlhcyA6dG9faSA6aW5kZXgNCg0K ICAgICMgQWxsb3cgY29tcGFyaXNvbiBieSBpbmRleA0KICAgIGRlZiA8PT4ob3RoZXIpDQog ICAgICBAaW5kZXggPD0+IG90aGVyLmluZGV4DQogICAgZW5kDQoNCiAgICBpbmNsdWRlIENv bXBhcmFibGUNCiAgZW5kDQoNCiAgZGVmIGluaXRpYWxpemUoKnN5bWJvbHMsICZibG9jaykN CiAgICBAbWVtYmVycyA9IFtdDQogICAgc3ltYm9scy5lYWNoX3dpdGhfaW5kZXggZG8gfHN5 bWJvbCwgaW5kZXh8DQogICAgICAjIEFsbG93IEVudW0ubmV3KDpmb28pDQogICAgICBzeW1i b2wgPSBzeW1ib2wudG9fcy5zdWIoL15bYS16XS8pIHsgfGxldHRlcnwgbGV0dGVyLnVwY2Fz ZSB9LnRvX3N5bQ0KICAgICAgbWVtYmVyID0gRW51bTo6TWVtYmVyLm5ldyhzZWxmLCBpbmRl eCkNCiAgICAgIGNvbnN0X3NldChzeW1ib2wsIG1lbWJlcikNCiAgICAgIEBtZW1iZXJzIDw8 IG1lbWJlcg0KICAgIGVuZA0KICAgIHN1cGVyKCZibG9jaykNCiAgZW5kDQoNCiAgZGVmIFtd KGluZGV4KSBAbWVtYmVyc1tpbmRleF0gZW5kDQogIGRlZiBzaXplKCkgQG1lbWJlcnMuc2l6 ZSBlbmQNCiAgYWxpYXMgOmxlbmd0aCA6c2l6ZQ0KDQogIGRlZiBmaXJzdCgqYXJncykgQG1l bWJlcnMuZmlyc3QoKmFyZ3MpIGVuZA0KICBkZWYgbGFzdCgqYXJncykgQG1lbWJlcnMubGFz dCgqYXJncykgZW5kDQoNCiAgZGVmIGVhY2goJmJsb2NrKSBAbWVtYmVycy5lYWNoKCZibG9j aykgZW5kDQogIGluY2x1ZGUgRW51bWVyYWJsZQ0KZW5kDQo= --------------010001010402060006070603--