为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Ruby中实现枚举?

如何在Ruby中实现枚举?

撒科打诨 2019-11-22 10:56:32
在Ruby中实现枚举用法的最佳方法是什么?我正在寻找可以(几乎)使用的东西,例如Java / C#枚举。
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

两种方式。符号(:foo符号)或常量(FOO符号)。


当您想提高可读性而不用文字字符串乱码时,使用符号是合适的。


postal_code[:minnesota] = "MN"

postal_code[:new_york] = "NY"

当您具有重要的基础值时,常数是适当的。只需声明一个模块来保存您的常量,然后在其中声明常量。


module Foo

  BAR = 1

  BAZ = 2

  BIZ = 4

end


flags = Foo::BAR | Foo::BAZ # flags = 3


查看完整回答
反对 回复 2019-11-22
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

最惯用的方法是使用符号。例如,代替:


enum {

  FOO,

  BAR,

  BAZ

}


myFunc(FOO);

...您可以只使用符号:


# You don't actually need to declare these, of course--this is

# just to show you what symbols look like.

:foo

:bar

:baz


my_func(:foo)

它比枚举更开放,但与Ruby精神非常契合。


符号的表现也很好。例如,比较两个符号是否相等,比比较两个字符串要快得多。


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 859 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信