在Ruby中,如何在Hash上交换键和值?
假设我有以下哈希:
{:a=>:one, :b=>:two, :c=>:three}
Run Code Online (Sandbox Code Playgroud)
我想转变成:
{:one=>:a, :two=>:b, :three=>:c}
Run Code Online (Sandbox Code Playgroud)
使用地图似乎相当乏味.有更短的解决方案吗?
该问题的公认答案表明这是在Ruby中表示枚举的一种好方法:
class Foo
BAR = 1
BAZ = 2
BIZ = 4
end
Run Code Online (Sandbox Code Playgroud)
在Java中,可以将多个值和方法附加到枚举值.我想在Ruby中实现相同或类似的东西.
什么是最类似Ruby的方式来表示这个Java枚举:
public enum Enum
VALUE_1("Value 1"),
VALUE_2("Value 2"),
VALUE_3("Value 3");
Enum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
private String value;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我还想保留Java枚举的隐含功能:
例子:
Enum.VALUE_1.getValue(); // "Value 1"
Enum.VALUE_2.name(); // "VALUE_2"
Enum.VALUE_3.ordinal(); // 2
Run Code Online (Sandbox Code Playgroud)