繁体   English   中英

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

[英]Can function in Swift return different data types?

我正在使用Swift UITableView ,我有一个函数,它根据某些条件返回行数,另一个函数返回每个部分的标题。 两个函数具有相同的主体,相同的条件,但第一个函数返回Int dat类型,第二个函数返回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)")

您可以使用具有两种不同返回类型的相同函数,如下所示

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

然后它被调用为

let (yourIntegerValue,yourStringValue) = getNumberOfRows(for section:yourSectionNumber)

现在使用这两个值来执行任务。

你可以返回tuple

func getNumberOfRows(for section: Int) -> (row:Int,title:String)

return如此return(row:suggestions.count,title:"Suggestions")

你可以使用

let tupple =  getNumberOfRows(for :0) 
tupple.row or  tupple.title

我会建议你做元组

你可以用这样的元组来做:

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

getNumberOfRows(for: 3).0
getNumberOfRows(for: 3).1

您可以尝试以下方式:

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM