Swift:希望对现有函数使用扩展

Swift:希望对现有函数使用扩展,swift,Swift,我定义了一个函数: func inSubfolder_(file : String, root : String) -> Bool { ... } 我还希望将其作为扩展添加到字符串中: extension String { func inSubfolder(root : String) -> Bool { return inSubfolder_(file : self, root : root) } } 我喜欢使用相同的名称(不带“\”),但全局名

我定义了一个函数:

func inSubfolder_(file : String, root : String) -> Bool { ... }
我还希望将其作为扩展添加到字符串中:

extension String {
    func inSubfolder(root : String) -> Bool {
        return inSubfolder_(file : self, root : root)
    }
}
我喜欢使用相同的名称(不带“\”),但全局名称需要声明为“全局”,这样扩展名称就不会尝试(递归地)访问自己。
我遗漏了什么?

您可以通过使用模块名称命名调用,显式地在全局范围内调用函数。在大多数情况下,这将是应用程序的目标名称。如果这是在游乐场的上下文中,则应使用
游乐场
,而不是模块名称

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

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

通过使用模块名命名调用,可以显式调用全局作用域中的函数。在大多数情况下,这将是应用程序的目标名称。如果这是在游乐场的上下文中,则应使用
游乐场
,而不是模块名称

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

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

这些参数必须相同,因为参数不同,所以您应该可以使用相同的名称。这也是我的问题!:-)我认为应该,但事实并非如此。我得到一个错误“调用中的额外参数'file'。它试图进入自己!这些参数必须相同,因为参数不同,所以您应该可以使用相同的名称。这也是我的问题!:-)我认为应该,但事实并非如此。我得到一个错误“调用中的额外参数'file'。它试图进入自己!