如何在 Ruby 中使用 C# 风格的枚举?
我只是想知道在 Ruby 中模拟 C# 风格枚举的最佳方法。
I just want to know the best way to emulate a C# style enumeration in Ruby.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我只是想知道在 Ruby 中模拟 C# 风格枚举的最佳方法。
I just want to know the best way to emulate a C# style enumeration in Ruby.
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
如果您需要枚举映射到值(例如,您需要最小化等于 0,最大化等于 100 等),我会使用哈希符号到值,就像这样:
冻结(就像内特所说)可以防止你将来意外破坏东西。
您可以通过这样做来检查某些内容是否有效
或者,如果您不需要任何值,而只需要检查“成员资格”,那么数组就可以了
像这样使用它
如果您的键将是字符串(例如RoR 应用程序中的“状态”字段),那么您可以使用字符串数组。 我在许多 Rails 应用程序中一直这样做。
这几乎就是 Rails validates_inclusion_of 验证器的目的:-)
个人注意:
我不喜欢输入 include? 一直如此,所以我有这个(只是因为 .in?(1, 2, 3) 的情况而变得复杂:
这让你可以输入
If you need the enumerations to map to values (eg, you need minimized to equal 0, maximised to equal 100, etc) I'd use a hash of symbols to values, like this:
The freeze (like nate says) stops you from breaking things in future by accident.
You can check if something is valid by doing this
Alternatively, if you don't need any values, and just need to check 'membership' then an array is fine
Use it like this
If your keys are going to be strings (like for example a 'state' field in a RoR app), then you can use an array of strings. I do this ALL THE TIME in many of our rails apps.
This is pretty much what rails
validates_inclusion_of
validator is purpose built for :-)Personal Note:
I don't like typing include? all the time, so I have this (it's only complicated because of the .in?(1, 2, 3) case:
This lets you type
它并不完全相同,但我经常会为这种事情构建一个散列:
冻结散列可以防止我意外修改其内容。
此外,如果您想在访问不存在的内容时引发错误,可以使用默认 Proc 来执行此操作:
It's not quite the same, but I'll often build a hash for this kind of thing:
Freezing the hash keeps me from accidentally modifying its contents.
Moreover, if you want to raise an error when accessing something that doesn't exist, you can use a defualt Proc to do this:
我不认为 Ruby 支持真正的枚举——不过,仍然有可用的解决方案。
枚举和 Ruby
I don't think Ruby supports true enums -- though, there are still solutions available.
Enumerations and Ruby
在 ruby 中定义 Enum 的最简单方法是使用带有常量变量的类。
The easiest way to define an Enum in ruby to use a class with constant variables.
正如其他人所说,创建一个类或散列是可行的。 然而,Ruby 要做的是使用 符号。 Ruby 中的符号以冒号开头,如下所示:
它们有点像仅由名称组成的对象。
Making a class or hash as others have said will work. However, the Ruby thing to do is to use symbols. Symbols in Ruby start with a colon and look like this:
They are kind of like objects that consist only of a name.