ios - Swift 中的函数可以返回不同的数据类型吗?

标签 ios swift generics

我在 Swift 中使用 UITableView,我有一个函数根据某些条件返回行数,另一个函数返回每个部分的标题。这两个函数具有相同的主体、相同的条件,但第一个函数返回 Int 数据类型,第二个函数返回 String 数据类型。

我能否以某种方式使这个通用函数成为返回某个通用值的函数,但该值对于第一个函数必须是“Int”,对于第二个函数必须是 String

下面的代码是返回行数的函数。相同的主体用于返回部分标题的函数。它的返回类型是String

func getNumberOfRows(for section: Int) -> Int {

    let parameters = SuggestionsTableSectionType.Parameters(recents: recents, suggestions: suggestions, section: section)

    if SuggestionsTableSectionType.recentsAndSectionIsZero(parameters).isActive {
        return recents.count
    } else if SuggestionsTableSectionType.suggestionsAndSectionIsZero(parameters).isActive {
        return suggestions.count
    } else if SuggestionsTableSectionType.recentsAndSuggestionsAndSectionIsZero(parameters).isActive {
        return recents.count
    } else if SuggestionsTableSectionType.recentsAndSuggestionsAndSectionIsOne(parameters).isActive {
        return suggestions.count
    }
    return 0
}

感谢您的回答。

最佳答案

你应该像这样返回 tuple 类型:

func getNumberOfRows(for section: Int) -> (Int, String) {}

此外,为了约定您的代码,您可以使用 typealias 关键字来定义您的 tuple 的名称:

typealias NumberOfRowsInfo = (row: Int, someString: String)

func getNumberOfRows(for section: Int) -> NumberOfRowsInfo {}

然后像这样获取数据:

let info = getNumberOfRows(for: section)
print("Row: \(info.row), string: \(info.someString)")

关于ios - Swift 中的函数可以返回不同的数据类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914506/

相关文章:

ios - Facebook iOS SDK 导致崩溃

c# - IsAssignableFrom 当接口(interface)有泛型但没有实现时

.net - typeof(T) 与 <T>

ios - 快速手势识别器 longpress with pinch and drag

ios - 具有多个原型(prototype)单元格的 Collection View 以及在 MVVM 下处理它们的通用方法

typescript 泛型类作为函数参数

iOS |如何以编程方式打开谷歌类应用程序

ios - 我的 fileExistsAtPath 语句在应该为 true 时返回 false

ios - Xcode 代码完成,搜索整个方法名称

swift - 试图了解 AudioKit 中 AKFFTTap 的输出