在 swift 2.3 中,我有一段简单的代码:
let joinedString = partOne! + PartTwo! + PartThree! + PartFour!
现在,随着转换到 swift 3,我一直在用最模糊的解释猛烈抨击大约 24 个错误。这是其中之一:
同一行代码报错:
Ambiguous reference to member '+'
但是,如果我这样拆分它们:
let OneAndTwo = partOne! + partTwo!
let ThreeAndFour = partThree! + PartFour!
let joinedString = OneAndTwo + ThreeAndFour
这行得通...他们是否像这样删除了多个字符串的链接,还是有问题?似乎编译器认为“+”是一个变量或其他名称相同的东西?
编辑:
尽管这是另一个错误,但似乎与以下内容有关:This Question
一旦超过 2 个可选字符串,也会崩溃。我想可选绑定(bind)是可行的方法。看起来这个错误已经存在了很长一段时间。
最佳答案
这似乎是一个错误,我会进一步调查。如果我们用另一个运算符模拟 !
的行为,它就可以正常工作:
postfix operator |! {}
postfix func |! <T>(rhs: T?) -> T {
return rhs!
}
let s1: String? = "Hello"
let s2: String? = " "
let s3: String? = "World"
let joined = s1|! + s2|! + s3|! // "Hello World"
关于ios - swift 3 : Joining multiple Strings with "+" operator no longer possible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39484078/