2015-11-03 44 views
1

我是新來的斯威夫特。我有字典,我將它傳遞給一些應該能夠修改它的方法。什麼是它的最佳解決方案,返回新字典(似乎是低效的,因爲複製的需要):(?是它的工作)如何在Swift中修改方法中的Dictionary對象?

func method(let dict : [String:String]) -> [String:String] { 
    var newDictionary = [String:String]() 
    ... // copy to newDictionary/remove existing items 
} 

或把它作爲inout參數:

func method(inout dict : [String:String]) { 
    ... // modify existing dictionary 
} 
+0

把它當作INOUT像傳遞指針是.cpp的,如果我沒有的誤導。但是,它應該工作,我在我的代碼中使用這種方式,它的工作很好。 – 2015-11-03 08:51:45

回答

2

輸入輸出參數具有傳遞給函數的值,由函數修改並從函數返回以替換原始值。

如上所述,它將修改作爲inout參數傳遞的實例。所以對你而言,在我看來,它絕對是你想要做的。

https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html按Ctrl + F「INOUT」

+0

順便說一句,有沒有更有效的方式來通過引用傳遞字典,以便讓方法修改它?根據'inout'文檔,這裏有兩個副本:當本地是從傳遞的變量創建並返回時。 – 4ntoine

+0

不是我所知道的,但我認爲這不太可能。 可以在這裏找到更多的見解,以瞭解它在幕後的工作原理:(ctrl + f「inout」)https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html #// apple_ref/DOC/UID/TP40014097-CH34-ID545 – 2015-11-03 13:02:14

相關問題