swift - 字符串数组减少

标签 swift reduce

我正在尝试通过 reduce 函数连接 String 数组的元素。现在尝试了一下,但我不知道问题到底是什么。这就是我认为应该做的事情。我也尝试过其他替代方案,但鉴于数量巨大,我将等待一些输入:

var genres = ["towel", "42"]
var jointGenres : String = genres.reduce(0, combine: { $0 + "," + $1 })

错误:

..:14:44: Cannot invoke '+' with an argument list of type '(IntegerLiteralConvertible, combine: (($T6, ($T6, $T7) -> ($T6, $T7) -> $T5) -> ($T6, ($T6, $T7) -> $T5) -> $T5, (($T6, $T7) -> ($T6, $T7) -> $T5, $T7) -> (($T6, $T7) -> $T5, $T7) -> $T5) -> (($T6, ($T6, $T7) -> $T5) -> $T5, (($T6, $T7) -> $T5, $T7) -> $T5) -> $T5)'

根据我的理解,$0 应该被推断为一个字符串,而 $1 与 $0 的组合也应该被推断为一个字符串。我不知道这里的类型系统有什么问题。有什么想法吗?

最佳答案

你的 reduce 闭包可能看起来像这样:

var jointGenres : String = genres.reduce("", combine: { $0 == "" ? $1 : $0 + "," + $1 })

这有 "" 而不是像你那样的 0,并确保返回值的开头没有额外的逗号。

原始代码不起作用,因为在 documentation 中表示为 U 的返回类型在你的答案中最初是 0,而你正试图向它添加一个字符串。在您的情况下,您真的希望 U 和 T 都代表字符串而不是整数。

关于swift - 字符串数组减少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25951739/

相关文章:

swift - 观察 UISwich 控件状态

database - 为我的 Swift 解析表添加值(value)

ios - 如何在 Swift 1.2 的 cellForRowAtIndexPath 中返回两种类型的自定义表格 View 单元格之一

swift - Swift Process 对象的参数问题

php - 将一个数组缩减为另一个数组

ios - 简单的 iOS NavigationController + PDFViewer 在每次初始化时都会泄漏 1.2 到 2 Mb 的内存。 (内存泄漏)( swift )

javascript - 为什么这个值在reduce范围内未定义,但在for循环中定义? (javascript)

java.util.function.BiConsumer<R,R>) 不适用(无法推断类型变量 R

javascript - 在嵌套对象上使用 reduce

Hadoop 溢出故障