我有一個方法,將[Int,MyClass]的Map作爲參數。事情是這樣的:斯卡拉方法參數:選項的集合或默認值
myMethod的(someMap:地圖[詮釋,MyClass的])
然而,someMap可能並不總是存在(在Java世界中,並沒有在斯卡拉空)。 下列哪是從一個角度API點此方法的一個更好的設計:
在一個選項結束語: myMethod的(someMap:選項[地圖[中等,MyClass的] =無)
定義一個默認空映射: myMethod的(someMap:地圖[中等,MyClass的] = Maps.empty)
第一個選項看起來雅緻,但是它有一個具有增加的複雜性來包裝一張地圖(如果在Some()中和實現者中必須執行getOrElse來打開它。 第一個選項也使api的消費者清楚,地圖對象可能實際上不存在(無)
在第二個選項中,不需要進行環繞(在Some中)或解包,但每當沒有現有的Map對象時,必須實例化一個空容器。
此外,參數agains 1:Option本身是0或1項目的容器,Map也是一個容器(集合)。將容器包裝在另一個容器中設計好嗎?
從API設計的角度來看,哪一個更好?
感謝讓。所以任何放置在Map中的對象的存在或不存在都是數據驅動的,並且是確定的運行時間。因此,如果我們使用Option,它會向API的使用者明確說明Maps可能是None。 btw的方法應該在不存在Map的情況下起作用。 Option.foreach/maps會處理這個問題嗎? – exifguy 2014-10-09 19:48:56