在C ++代码块中,我看到了类似这样的内容:
enum {
a = 0,
b = (1U << 0),
c = (1U << 1),
d = (1U << 2)
}
要在Ruby中实现同样的目标,我是否必须做这样的事情?
d = "1U".bytes.inject { |x,y| (x<<8) | y } << 2
或者我是否需要做其他事来完成C ++代码的工作?
答案 0 :(得分:2)
C ++中的1U不是字符串,它是无符号数字1.实际上,C ++中的上述代码可以替换为:
a = 0;
b = 1U;
c = 2U;
d = 4U;
在红宝石中你可以简单地做
> 1 << 0
=> 1 #0001
> 1 << 1
=> 2 #0010
> 1 << 2
=> 4 #0100
但是你没有在ruby中使用字节操作,除非你有充分的理由,对吧? : - )