用 map 表達互斥邏輯

2022-09-04 08:42:12 字數 906 閱讀 8184

在這個開發周期遇到這樣乙個需求:

管理員可以給子賬號配置許可權,有些許可權存在互斥不可同時勾選,比如

審核員和代採、審核和採購員不可同時勾選

之前同事實現的方式如下:

這樣每新增乙個互斥關係就要遍歷一次,低效且**繁瑣。

//

審核員和代採、審核和採購員不可同時勾選

if ([tag isequaltostring:@"

審核"] &&selected) }}

if ([tag isequaltostring:@"採購"

])

else

if ([dto.rolename isequaltostring:@"

代採"] && !selected) }}

///選擇代採預設選擇採購

if ([tag isequaltostring:@"

代採"] &&selected)

else

if ([dto.rolename isequaltostring:@"

審核"])

}}

考慮到以後可能繼續新增互斥關係,在此使用map儲存互斥關係,

這樣每新增一種互斥關係只需要在map內增加對應的鍵值對就可以了,

大大簡化了邏輯,使**更加清晰易於維護。

1

//審核員和代採、審核和採購員不可同時勾選2//

使用 map 儲存 互斥關係 ,k-v 表示 互斥

3 nsdictionary *dict =@;

89 nsstring *mutex =[dict valueforkey:tag];

1011

if (!isstrempty(mutex) &&selected) 16}

17 }

邏輯表示式

1.比較表示式只能描述1個條件 2.邏輯表示式可以描述多個條件,並且使用邏輯運算子來指定多個條件之間的關係 符號含義 與 ll或 非 邏輯與表示式 邏輯與 由 連線起來的邏輯表示式,只要當兩邊的條件都成立的時候,整個邏輯表示式猜成立,只要有一邊的條件不成立,那麼整個邏輯表示式都不成立 表示式結果 1...

邏輯表示式

我們知道,在c c 中,邏輯真與邏輯假分別用1和0來表示。現在,請定義logical類來表示乙個邏輯表示式。包括 1.2個int型別的屬性a和b,1個char型別的屬性op,其中a和b只能為0或1,是邏輯表示式的2個運算元 op是 四種運算子之一,分別表示異或 同或 與 或。2.建構函式logica...

高效表達的邏輯

我不是福爾摩斯,請不要讓我推理你想表達什麼東西 距離基站越遠,手機收到的訊號越弱。氫原子束縛了1個電子,但他沒辦法穩定地吸引更多的電子。太陽束縛住了八大行星,但他沒辦法束縛比鄰星 最近的乙個恆星 顯而易見,任何事物在某一方面的能力都不是無限的,距離能力中心越遠的範圍,能力越弱。人不是神,人類的理解能...