首页 > 解决方案 > 从 swift 3 迁移到 swift 4

问题描述

我正在做一个从 Swift 3 迁移到 4 的项目。我修复了除此之外的所有问题。首先我不明白这段代码:

let messageText = stride(from: 0, to: lineNumber, by: 1).reduce("") { "\n\($0.0)" }

在这两个版本之间,Reduce 功能发生了变化。所以我想将它重写为 Swift 4。

标签: swift

解决方案


假设目的是创建一个数字从 0(包括)到lineNumber(不包括)的字符串,用换行符分隔,那么它应该是

let messageText = stride(from: 0, to: lineNumber, by: 1).reduce("") { "\($0)\n\($1)" }

错误信息具有误导性,真正的问题是闭包类型错误,它必须采用两个参数。

同样可以实现

let messageText = (0..<lineNumber).map(String.init).joined(separator: "\n")

推荐阅读