我想我刚刚在swift编译器中找到了最奇怪的错误
如果你尝试连接两个隐式解包的按钮数组,工作正常,但是一旦你尝试连接相同类型的第三个数组,它就会显示binary operator '+' cannot be applied to types [UIButton] and [UIButton]!
,即使前两个数组是隐式解包的...
如......
@IBOutlet var buttons1: [UIButton]!
@IBOutlet var buttons2: [UIButton]!
@IBOutlet var buttons3: [UIButton]!
var allButtons = button1 + button2 //this works
var allButtons = buttons1 + buttons2 + buttons3 //this doesn't…
也在游乐场重复了这个。
编辑:
看起来问题的一部分是button1 + button2
的串联产生了[UIButton]
而不是[UIButton]!
,即使我强行解开连接如下:
var allButtons = button1! + button2!
此外,即使我强制变量的类型,它仍然不起作用:
var allButtons: [UIButton]! = button1 + button2 + button3
这只是我公然遗失的东西,还是这个真正的错误?
编辑2
我找到了两个解决方法。它们都有意义,因为前两个数组的连接产生了结果,但我仍然觉得奇怪的是编译器不会推断给定语句的所有三个类型。这是预期的行为......?
var anotherAllButtons = button1 + button2 + (button3 as [UIButton])
var allButtons = (button1 + button2) as [UIButton]! + button3
有趣的是,从[UIButton]到[UIButton]的演员!永远不会失败,这让我怀疑编译器会正确推断出类型。