Javascript 验证(按位)值是否与枚举的多个特定标志匹配

Javascript 验证(按位)值是否与枚举的多个特定标志匹配,javascript,python,enums,bitwise-operators,Javascript,Python,Enums,Bitwise Operators,我想检查一个值是否对应于一组标志(来自枚举或类似对象) 现在,我已经用javascript实现了以下函数(赞扬代码段:3): 函数hasFlags(标志,值){ 设s=flags.reduce((和,v)=>sum+=v,0); 返回值(s&value)==s } 标志={ 步骤0:1您可以检查,如果条件错误,将退出 const hasFlags=(flags,value)=>flags.every(flag=>flag&value), 标志={ 步骤0:1Python中的一个选项是标志的集

我想检查一个值是否对应于一组标志(来自枚举或类似对象)

现在,我已经用javascript实现了以下函数(赞扬代码段:3):

函数hasFlags(标志,值){
设s=flags.reduce((和,v)=>sum+=v,0);
返回值(s&value)==s
}
标志={
步骤0:1您可以检查,如果条件错误,将退出

const
hasFlags=(flags,value)=>flags.every(flag=>flag&value),
标志={

步骤0:1Python中的一个选项是标志的
集,其中标志是的元素(例如)模块中的枚举。这还具有已定义的子集运算符的优点,因此,当标志组合表示为位掩码时,您可以直接使用位运算符对所有标志进行突变和测试

STEP_0 = 1 << 0
STEP_1 = 1 << 1
STEP_2 = 1 << 2
STEP_3 = 1 << 3
STEP_4 = 1 << 4
STEP_5 = 1 << 5
STEP_6 = 1 << 6
STEP_7 = 1 << 7

def has_flags(flags_to_check_for, cur_flags):
    return (cur_flags & flags_to_check_for) == flags_to_check_for

desired_flags = STEP_2 | STEP_3 | STEP_6 

cur_flags = STEP_2
print has_flags(desired_flags, cur_flags)   # False
cur_flags |= STEP_3
cur_flags |= STEP_6
print has_flags(desired_flags, cur_flags)  # True
# ...

STEP_0=1你说的更pythonic是什么意思?我觉得这没问题。也许我错了。我想问题是关于Python,而不是JS。
STEP_0 = 1 << 0
STEP_1 = 1 << 1
STEP_2 = 1 << 2
STEP_3 = 1 << 3
STEP_4 = 1 << 4
STEP_5 = 1 << 5
STEP_6 = 1 << 6
STEP_7 = 1 << 7

def has_flags(flags_to_check_for, cur_flags):
    return (cur_flags & flags_to_check_for) == flags_to_check_for

desired_flags = STEP_2 | STEP_3 | STEP_6 

cur_flags = STEP_2
print has_flags(desired_flags, cur_flags)   # False
cur_flags |= STEP_3
cur_flags |= STEP_6
print has_flags(desired_flags, cur_flags)  # True
# ...