如何从由管道(|)分隔的值组成的变量中获取所有值?

时间:2015-07-15 03:56:17

标签: ios swift

我有一个UIRectEdge类型的变量,我就是这样开始的:

var edges: UIRectEdge = .Right | .Left

稍后,我需要知道这个变量包含什么。我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

如果你想知道变量是否包含某个组件,你可以这样:

import tornado
import bson
from bson import json_util
from bson.json_util import dumps
class TypeList(APIHandler):
@gen.coroutine
def get(self):
    doc = yield db.vtype.find()
    self.write(json_util.dumps(doc))

这就是为什么这样做的原因:

例如左边是00100(二进制),右边是01000.将它们与OR运算符(管道)组合成01100。

然后,使用AND运算符01100(组合)& 01000(右)将找到这两个二进制数均为1的位置,并将该位设为1,这与原始数字相同(右):

    var edges: UIRectEdge = .Right | .Left | .Top

    if(edges & UIRectEdge.Right == UIRectEdge.Right){
        println("right")
    }

    if(edges & UIRectEdge.Left == UIRectEdge.Left){
        println("left")
    }

    if(edges & (UIRectEdge.Left | UIRectEdge.Top) == (UIRectEdge.Left | UIRectEdge.Top)){
        println("left and top")
    }

请注意,这些是二元运算符01100 (.Right | .Left) & 01000 (.Right) = 01000 (.Right) &;不是逻辑|&&