当前位置:  开发笔记 > IOS > 正文

使用重载函数作为一等公民

如何解决《使用重载函数作为一等公民》经验,为你挑选了1个好方法。

假设我们在一个类中有几个重载函数:

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最常见的例子).



1> Rob Napier..:

这是Swift的一个已知限制.有一个公开的提议来解决它.目前唯一的解决方案是关闭.

请注意,Swift中的许多内容都是如此.您也不能直接将属性称为函数,即使它们的行为与函数类似.你必须使用一个闭包.甚至一些免费功能也无法直接传递(print最常见的例子).

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有