swift - 从 swift 3 迁移到 swift 4
问题描述
我正在做一个从 Swift 3 迁移到 4 的项目。我修复了除此之外的所有问题。首先我不明白这段代码:
let messageText = stride(from: 0, to: lineNumber, by: 1).reduce("") { "\n\($0.0)" }
在这两个版本之间,Reduce 功能发生了变化。所以我想将它重写为 Swift 4。
解决方案
假设目的是创建一个数字从 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")
推荐阅读
- node.js - 当pdf文件转换为图像和图像然后组合形成一个pdf时,Nodejs服务器出现代理错误
- aframe - 框架颜色变化
- android - Android Studio 模拟器无法在 Windows 11 上运行
- c# - appsettings.json 配置的迁移工具
- ruby-on-rails - 如果从外部路由,Rails 5 会清除会话变量
- shell - 从终端/C++ 程序启动时的不同 Python 版本
- php - Laravel 8 Google 和 Facebook 通过回调 URL 中的社交名流错误登录。错误太多重定向
- adfs - ADFS 将 wtrealm/wres 参数添加到声明提供程序的注销调用
- python - 在二分搜索中,为什么 mid = (left + (right - left)) // 2 比 mid = (left + right) // 2 好?
- python - 我如何在python中多次处理值错误异常