簡體   English   中英

與枚舉相反(使用公式)(目標-c)

[英]opposite of enum (using formula) (objective-c)

我有4個數字0-3,這是一個枚舉(objective-c),我想使用公式來得出相反的結論。 因此,如果將0放入公式中,則返回2;如果輸入2,則返回0(與1和3相同)。

原因是(與編程相關)我想得到枚舉的對立而不必執行if或switch語句。 但這意味着任何公式(如果可能)都必須不復雜,因此它比使用if或switch更有效。

公式很簡單:

n = n ^ 2;

0-3的位值以及如何對其進行異或運算:

n       ^10
---------------
0 = 00 : 10 = 2
1 = 01 : 11 = 3
2 = 10 : 00 = 0
3 = 11 : 01 = 1

測試(用C#編寫):

for (int n = 0; n <= 3; n++) {
  Console.WriteLine("{0} : {1}", n, n ^ 2);
}

輸出:

0 : 2
1 : 3
2 : 0
3 : 1
int newValue = 3 - originalValue;

也許轉換為您的枚舉類型。

編輯:抱歉,這交換0 <=> 3和1 <=> 2,我認為這是相反的意思。

對於0 <=> 2和1 <=> 3,您可以使用

int newValue = (originalValue + 2) % 4;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM