在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个可选字符串,也会崩溃。我想可选的绑定是当时的方式。好像这个bug已经有一段时间了。
答案 0 :(得分:1)
这似乎是一个错误,我将进一步调查。如果我们使用另一个运算符模拟!
的行为,它就可以正常工作:
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"