2016-09-19 46 views
1

我definied功能:斯威夫特:想用擴展現有功能

func inSubfolder_(file : String, root : String) -> Bool { ... } 

此我還想添加到字符串作爲擴展:

extension String { 
    func inSubfolder(root : String) -> Bool { 
     return inSubfolder_(file : self, root : root) 
    } 
} 

我喜歡使用相同的名稱(沒有「_」),但全局需要聲明爲「全局」,這樣擴展名不會嘗試訪問(遞歸)。 我錯過了什麼?

+0

這些參數必須相同 –

+1

由於參數不同,您應該能夠具有相同的名稱。 – rob180

+0

這也是我的問題! :-)我認爲應該,但事實並非如此。我在通話中收到一個錯誤「額外參數」文件「。它試圖訪問自己! –

回答

0

通過用模塊名稱命名您的調用,您可以顯式調用全局作用域中的函數。在大多數情況下,這將是您的應用程序的目標名稱。如果這是在操場上下文中,則使用Playground而不是模塊名稱。

func inSubfolder(file : String, root : String) -> Bool { ... } 

extension String { 
    func inSubfolder(root : String) -> Bool { 
     return AppTargetName.inSubfolder(file : self, root : root) 
    } 
}