Swift 4.2 语法更改 - Swift 类型推断发生了什么?

Swift 4.2 Syntax change - What happened to Swift type inference?

我是 运行 Xcode 10 beta Swift 4.2。 Xcode 想将我的 Xcode 9.4.1 和 Swift 4.1 代码转换为 Swift 4.2 语法。变化都是UIView.animate(... options: ...).

我使用像 .curveEaseIn 这样的选项,它以前工作得很好,但它想将它们更改为 UIView.AnimationOptions.curveEaseIn

Swift 的 ENUM 类型推断发生了什么?

在 Swift 4.1 中是 UIViewAnimationOptions.curveEaseIn。因此,迁移器已将您的 .curveEaseIn 检测为 UIViewAnimationOptions.curveEaseIn 并尝试将其转换为 UIView.AnimationOptions.curveEaseIn.

目前的迁移者似乎不喜欢点引导符号。

您可以手动将所有出现的 UIView.AnimationOptions.curveEaseIn 转换为 .curveEaseIn,并且 Swift 类型推断会在适当的情况下起作用。

您可能想写一个feature request建议改进迁移器。


(加法) 似乎 Xcode 10 beta 3 已经解决了这个问题,虽然我还没有测试过。

Xcode 10 beta 3 Release Notes

AnimationOptions 是现在 swift 4.2

中 UIView 下的一个枚举

您还可以查看此 git 存储库,其中包含语法更改列表。 请随时为您在项目中遇到的更改做出贡献。

https://github.com/alexliubj/Swift-Migration-4.2