【发布时间】:2016-01-20 16:53:39
【问题描述】:
是否可以在属性上使用!(not, or bang) 运算符?我想这样做的原因是因为我可能会找到一个与我想要做的完全相反的属性。这是我想到的一个例子。
GKMatchRequest *request = [[GKMatchRequest alloc] init];
request.minPlayers = 2;
request.maxPlayers = 2;
request.!playerGroup = MyMap_Forest | MyRulesCaptureTheFlag;
我从Apple Docs 得到这个例子并修改它。
文档是这样说的:
如果您的游戏设置了
playerGroup属性,则只有请求共享相同playerGroup值的玩家才会被Game Center 自动处理。将playerGroup属性设置为0 允许玩家匹配到任何等待匹配。将 playerGroup 属性设置为非零数字,以仅将玩家与匹配请求共享相同玩家组号的玩家匹配。
【问题讨论】:
-
那就是
request.playerGroup = !(MyMap_Forest | MyRulesCaptureTheFlag); -
您无法使用建议的语法做您想做的事情。 @Leo 的语法正是你所需要的。
-
呃,假设
MyMap_Forest或MyRulesCaptureTheFlag不为零,那么!(MyMap_Forest | MyRulesCaptureTheFlag)将始终为零。我怀疑这是我们想要的。 -
如果指定的值是位掩码,那么所需的结果可能是
request.playerGroup = ~(MyMap_Forest | MyRulesCaptureTheFlag);。这将反转位掩码,因此它包括除两组之外的所有内容。但如果这些值不是位掩码,这也行不通。 -
如果这是一个位掩码,那么这将是切换到 Swift 的一个很好的理由,您可以在其中操作位掩码 as sets 并且做您想做的事情是微不足道的。但事实并非如此。 :)
标签: ios objective-c properties operators not-operator