Ruby-Enum

Ruby 快速定义枚举
授权协议 MIT
开发语言 Ruby
所属分类 开发工具、 Ruby/Rails开发工具
软件类型 开源软件
地区 不详
投 递 者 司空学智
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Ruby-Enum 是一组 Ruby 定义枚举的便捷方式,可用于快速定义枚举。

用法

枚举可以作为常量或类方法定义和访问。

常量

定义枚举,并作为常量引用

class OrderState
  include Ruby::Enum

  define :CREATED, 'created'
  define :PAID, 'paid'
end
OrderState::CREATED # 'created'
OrderState::PAID # 'paid'
OrderState::UNKNOWN # raises Ruby::Enum::Errors::UninitializedConstantError
OrderState.keys # [ :CREATED, :PAID ]
OrderState.values # [ 'created', 'paid' ]
OrderState.to_h # { :CREATED => 'created', :PAID => 'paid' }

类方法

定义枚举,并作为类方法引用

class OrderState
  include Ruby::Enum

  define :created, 'created'
  define :paid, 'paid'
end
OrderState.created # 'created'
OrderState.paid # 'paid'
OrderState.undefined # NoMethodError is raised
OrderState.keys # [ :created, :paid ]
OrderState.values # ['created', 'paid']

默认值

指可选,不选的话默认为 key。

class OrderState
  include Ruby::Enum

  define :UNSPECIFIED
  define :unspecified
end
OrderState::UNSPECIFIED # :UNSPECIFIED
OrderState.unspecified # :unspecified

枚举

支持所有Enumerable方法

迭代

OrderState.each do |key, enum|
  # key and enum.key are :CREATED, :PAID
  # enum.value is 'created', 'paid'
end
OrderState.each_key do |key|
  # :CREATED, :PAID
end
OrderState.each_value do |value|
  # 'created', 'paid'
end

映射

OrderState.map do |key, enum|
  # key and enum.key are :CREATED, :PAID
  # enum.value is 'created', 'paid'
  [enum.value, key]
end

# => [ ['created', :CREATED], ['paid', :PAID] ]

排序

OrderState.sort_by do |key, enum|
  # key and enum.key are :CREATED, :PAID
  # enum.value is 'created', 'paid'
  enum.value.length
end

# => [[:PAID, #<OrderState:0x0 @key=:PAID, @value="paid">], [:CREATED, #<OrderState:0x1 @key=:CREATED, @value="created">]]
  • JRuby使用经验 - Ruby - language - ITeye论坛 JRuby使用经验 - Ruby - language - ITeye论坛 JRuby使用经验 - Ruby - language - ITeye论坛 首先我是一个Java程序员,很喜欢Ruby. 公司由于业务的需要,在Java项目中引入动态语言,目的是可以快速地修改业务逻辑以响应快速变化的业务需求.于是我有幸当了一回JR

  • 1. $ rails server Could not find gem 'jquery-rails (>= 0) ruby' in the gems available on this machine. Run `bundle install` to install missing gems.To:you need install the jquery-rails $ gem install j

  • Log 1 产品 Product 1.1 创建 Product 创建名为 project 的 rails 应用 rails new project 创建 Product 模型 rails generate scaffold Product title:string description:text image_url:string price:decimal 这会生成一个 migration

  • 最近一直忙着面试... 现在终于有时间来继续学习ruby了. :) ruby中的条件语句 a = 8 if a > 0 puts "a > 0" elsif a < 0 puts "a < 0" else puts "a == 0" end a = 0 str = if a > 0 then "a > 0" elsif a < 0 then "a < 0" else "a == 0"

  • MySQL/Ruby[Japanese] -------------------------------------------------------------------------------- This is the MySQL API module for Ruby. It provides the same functions for Ruby programs that the M

  • 学习 Ruby 集合我觉得最好的方式是打开 irb --simple-prompt 命令,跟着例子学习。试着借助 Tab 补全加以思考?。 创建数组 和其他动态语言创建相似。 >> a = [1, 2, 3] => [1, 2, 3] >> a.class => Array >> a.length => 3 >> a.size => 3 >> a[2] => 3 >> a << 4 => [1,

  • 枚举器 枚举器是类Enumeralbe::Enumerator的实例 可以用new直接实例化, 但通常情况下使用Object类的to_enum或同义词enum_for方法 s="hello" s.enum_for(:each_char).map{|c| c.succ} #=>["i","f","m","m","p"] enumerator=3.times enumerator.each{|x| p

  • 本文部分摘自 On Java 8 枚举类型 Java5 中添加了一个 enum 关键字,通过 enum 关键字,我们可以将一组拥有具名的值的有限集合创建为一种新的类型,这些具名的值可以作为常规的程序组件使用,例如: public enum Spiciness { NOT, MILD, MEDIUM, HOT, FLAMING } 这里创建了一个名为 Spiciness 的枚举类型,它有

  • 枚举器是类Enumerable::Enumerator 的实例 实例化方式: 1、可以通过new方法(极少使用) 2、通过to_enum 或 enum_for 方法。 使用的时候如果没有参数,to_enum 会返回一个枚举器,且该枚举器只是简单的调用该对象的each方法。 print "hello".chars.map {|c| c.succ} print "hello".enum_for(:ea

  • 基础知识 Ruby 字符串类型为 String 默认使用 Unicode 字符集,可以直接转码,操作 UTF-8 ?> "Hello".class => String ?> '中国'.to_s => "中国" ?> '中国'.encoding.to_s => "UTF-8" 复制代码 多行字符串 # 其中 {} 可以换成 <> ## !! 等 ?> z = %q{My name is Grac K

  • 1. record attribute 判断 <% if @user.login.blank? %> # refactor 只要是模型属性都自带?方法判断 <% unless @user.login? %> 每一个 record 属性都有此方法,它可以让我们少敲几个字符。但,除非属性本身就是 boolean 类型,其它类型的判断结果有时候会和想像的不一样,请慎用。不要为了少敲几个字符,增加犯

  • enum(枚举)是Java se5中添加的一个新特性,是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。 一、基本特性 创建Enum时,编译器会为你生成一个相关的类,这个类继承自Java.lang.Enum。下面例子演示了Enum的

  • li151-219:~/downloads/ruby-1.9.1-p378 # make sed 's/{\$([^(){}]*)[^{}]*}//g' common.mk > uncommon.mk gcc -O2 -g -Wall -Wno-parentheses -I. -I.ext/include/i686-linux -I./include -I. -DRUBY_EXPORT -o ma

  • 在刚毕业的学生中,有些东西经常喜欢用定义常量的整形或者字符串的方式来比较, 这种方式不是不好,但有时候更好的是利用java 中的枚举来比较,判断,调用。相比之下会更好,所以弄个简单的例子在这里,给新员工培训的时候也正好用 在java 中,其实可以直接用 == 判断枚举是否相等. 一个简单的枚举定义public enum Language { JAVA, PYTHON, NODE, NET, RUB

  • 1,案例 /* mysql> select * from employee_person; +----+-------------------------------------+---------+--------------------------+------------+------+----------+-----------------+----------+ | id | addre

  • class Generator   def initialize(enumerable)     @enumerable = enumerable  # Remember the enumerable object     create_fiber              # Create a fiber to enumerate it   end   def next             

  • 第二章 Ruby程序的结构和运行 Ruby的注释以#开头,并持续到该行结束。Ruby没有/*...*/的C风格注释。 如果#出现在字符串或者正则表达式的字面量里,则它是字符串或者正则表达式的一部分,而不是注释。 Ruby支持嵌入式注释,以=begin开头,以=end结尾。=begin和需要注释的内容之间至少要有一个空格作为分界符。=end也是如此,而且=end所在行,整行都是被注释掉的。=必须作为

  • 今天要讲的是迭代器(iterator)。什么是迭代器呢?它的好处就是会一个一个地传回集合里的元素,让我们可以利用迭代方法做重复的事。   在Ruby里的collection集合里有Array数组和Hash哈希。   今天要介绍三种用在collection集合的迭代器分别叫each,map和collect,这也是常见的Ruby面试考题呢!   Ruby经典面试题目#14 Day14 each,map

  • In Java, you can use == operator to compare Enum value. 1. Java Enum example Language.java package com.mkyong.java public enum Language { JAVA, PYTHON, NODE, NET, RUBY 2. Compare with == Example to co

 相关资料
  • 主要内容:1. Objective-C集合快速枚举是Objective-C的功能,用于枚举集合。 因此,要了解快速枚举,首先需要了解集合,这将在下一节中进行说明。 1. Objective-C集合 集合是基本结构。它用于保存和管理其他对象。 集合的主要目的是提供一种有效存储和检索对象的通用方法。 有几种不同类型的集合。 虽然它们都能实现能够容纳其他对象的相同目的,但它们的主要区别在于检索对象的方式。 Objective-C中使用的最常见的

  • 你能在Swift中继承枚举吗?关于枚举继承,应该知道哪些规则? 以下测试代码: 产生

  • 快速枚举是Objective-C的功能,有助于枚举集合。 因此,为了了解快速枚举,我们首先需要了解集合,这将在下一节中进行说明。 Objective-C中的集合 集合是基本结构。 它用于保存和管理其他对象。 集合的整个目的是提供一种有效存储和检索对象的通用方法。 有几种不同类型的集合。 虽然它们都能实现能够容纳其他对象的相同目的,但它们的主要区别在于检索对象的方式。 Objective-C中使用的

  • 问题内容: 我以为我很了解Java泛型,但是随后在java.lang.Enum中遇到了以下内容: 有人可以解释如何解释此类型参数吗?奖励点,用于提供可以使用类似类型参数的其他示例。 问题答案: 这意味着枚举的类型参数必须从本身具有相同类型参数的枚举派生。怎么会这样 通过使类型参数成为新类型本身。因此,如果我有一个名为StatusCode的枚举,则它等效于: 现在,如果你检查的限制,我们已经得到了-

  • 问题内容: 我正在使用wahoo Fitness API,它定义了以下Objective-C枚举: 我找不到快速使用它的方法。我首先尝试对其进行切换/操作,但未成功。我正要继续进行以下操作: 但是它不能编译: 任何解决方法?我阅读使用,但在xcode beta-4中不起作用。 问题答案: 如您所说,从.beta 4开始,使用.value获取基础整数的解决方法不再起作用。 不幸的是an 不能从Obj

  • 问题内容: 背景 我正在尝试使用NSCoding协议对String样式的枚举进行编码,但是我遇到了转换为String和从String返回的错误。 解码和编码时出现以下错误: 字符串不可转换为舞台 额外参数ForKey:通话中 码 问题答案: 您需要将枚举值与原始值进行转换。在Swift 1.2(Xcode 6.3)中,如下所示: Swift 1.1(Xcode 6.1),代替: 迅速1.0(6.0

  • 结构体 结构体 (struct) 是一种记录类型,所包含的每个域 (field) 都有一个名称。 每个结构体也都有一个名称,通常以大写字母开头,使用驼峰命名法。 元组结构体 (tuple struct) 是由元组和结构体混合构成,元组结构体有名称, 但是它的域没有。当元组结构体只有一个域时,称为新类型 (newtype)。 没有任何域的结构体,称为类单元结构体 (unit-like struct)