假设我们在一个类中有几个重载函数:
func appendToABC(string s: String) -> String { return "ABC \(s)" } func appendToABC(duplicatedString s: String) -> String { return "ABC \(s)\(s)" }
我们有一些API可以将函数作为参数:
func printString(function: (String) -> String) { print(function("ASD")) }
我们如何将appendToABC函数之一作为参数传递给printString函数?
我已经考虑过使用闭包来包装函数,但它看起来并不好看
printString { appendToABC(duplicatedString: $0) }
Rob Napier.. 5
这是Swift的一个已知限制.有一个公开的提议来解决它.目前唯一的解决方案是关闭.
请注意,Swift中的许多内容都是如此.您也不能直接将属性称为函数,即使它们的行为与函数类似.你必须使用一个闭包.甚至一些免费功能也无法直接传递(print
最常见的例子).
这是Swift的一个已知限制.有一个公开的提议来解决它.目前唯一的解决方案是关闭.
请注意,Swift中的许多内容都是如此.您也不能直接将属性称为函数,即使它们的行为与函数类似.你必须使用一个闭包.甚至一些免费功能也无法直接传递(print
最常见的例子).