【发布时间】:2018-08-20 21:30:58
【问题描述】:
我看到了一些对我来说没有意义的东西。这是我的代码...
import Foundation
enum SeparatorPaddingLocation{
case beforeSeparator
case afterSeparator
}
struct SeparatorToken{
let separator : Character
let formattedSeparator : String
let paddingLocation : SeparatorPaddingLocation
}
extension Array where Element == String {
func aligned(separatorTokens:[SeparatorToken]) -> [String] {
// This won't compile!
let remainingSeparatorTokens = Array(separatorTokens.dropFirst())
return self
}
}
即使dropFirst() 返回ArraySlice<SeparatorToken>,'let' 也会导致此编译错误。
没有更多上下文的表达类型是模棱两可的
为什么这是模棱两可的?我错过了什么?
我也尝试过像这样完全限定它,但这也没有用...
let remainingSeparatorTokens:[SeparatorToken] = Array(separatorTokens.dropFirst())
【问题讨论】:
-
不是从ArraySlice
推断出来的吗? -
不知道该说什么。这是从我的代码中复制的,我也在运行 Xcode 9.2 (9C40b)。
-
已更新。我只是将确切的代码原样粘贴在操场上,我确实得到了错误。奇怪!
-
我发现您的更新代码存在问题。不同之处在于函数位于
Array扩展中。