該數組只包含三個元素,但我們使用下標10來訪問它,會出現越界錯誤。
但是當我們訪問壹個不在字典中的元素時,類似的情況就不會發生了!
同樣的問題,不同的待遇,為什麽?
我們來看看swift中數組和字典下標訪問的實現。
比較這兩種實現,我們可以得到問題的原因:
所以對於數組,swift別無選擇,只能得到壹個致命錯誤。字典返回壹個可選值。如果發生意外,即使下標不能拋出錯誤,字典也能從容地返回壹個nil。
事實上,我們可以擴展數組來實現壹個即使數組訪問越界也不會拋出異常的版本。
我們使用extension關鍵字來擴展數組。應該註意的是,我們不能覆蓋原始的下標方法。
我們所要做的就是添加壹個新的下標方法,並顯式地指定壹個外部參數。現在我們可以像這樣訪問數組。
我們需要在訂閱時添加壹個標簽。這個時候,雖然我們已經過線了,卻收獲了壹個像字典壹樣的nil。