1. 程式人生 > 其它 >ng-template 使用過程中預設引數不能按照期望工作的問題單步除錯

ng-template 使用過程中預設引數不能按照期望工作的問題單步除錯

引入

假設一個班中有 \(n\) 個人,每個人都參加至少參加了 \(A\)\(B\) 兩組中的至少一個,已知有 \(15\) 人蔘加 \(A\) 組,\(20\) 人蔘加 \(B\) 組,\(5\) 人同時參加了兩個組,求總人數 \(n\)

顯然,總人數並不是 \(15+20=35\),因為有人同時參加了兩個組,我們畫出 Venn 圖,顯然,總人數為 \(30\)。實際上,我們可以直接用 \(15+20-5\) 得到相同的答案,可以理解為,\(15+20\) 是兩個小組的人數之和,但是中間同時參加兩個組的 \(5\) 人被重複算了兩遍(\(A\)\(B\) 中各一遍),所以要把他們減掉。
一般地,假如 \(A\)

組有 \(a\) 人,\(B\) 組有 \(b\) 人,同時參加兩組的有 \(c\) 人,我們也能用和剛剛一樣的思路算出總人數 \(n=a+b-c\)
更加一般地,我們不妨將 \(A\)\(B\) 兩“組”看成兩個集合,我們剛剛的結論就是:\(|A\cup B|=|A|+|B|-|A\cap B|\)\(|S|\) 表示集合 \(S\) 的元素個數,即 \(\operatorname{card}(S)\))。

如果有 \(3\) 個集合呢?
我們再畫出 \(Venn\) 圖,發現此時 \(|A\cup B\cup C| = |A|+|B|+|C|-|A\cup B|-|A\cup C|-|B\cup C|+|A\cup B\cup C|\)
,因為 \(|A|+|B|+|C|\) 中,集合兩兩相交的地方都被加了兩次,所以我們減去 \(|A\cup B|+|A\cup C|+|B\cup C|\) ,但是這樣三個集合都相交的地方,即 \(|A\cup B\cup C|\) 開始時被加了三次,然後又被減了三次,我們還需要加上一次。