可能的Swift 3编译器错误:连接[UIButton]的数组!

可能的Swift 3编译器错误:连接[UIButton]的数组!,uibutton,swift3,Uibutton,Swift3,我想我刚刚在swift编译器中发现了最奇怪的错误 如果您尝试连接两个隐式展开的按钮数组,效果很好,但一旦您尝试连接同一类型的第三个数组,它就会说二进制运算符“+”不能应用于类型[UIButton]和[UIButton]即使前两个数组隐式展开 如 @IBOutlet var buttons1: [UIButton]! @IBOutlet var buttons2: [UIButton]! @IBOutlet var buttons3: [UIButton]! var allButtons = b

我想我刚刚在swift编译器中发现了最奇怪的错误

如果您尝试连接两个隐式展开的按钮数组,效果很好,但一旦您尝试连接同一类型的第三个数组,它就会说
二进制运算符“+”不能应用于类型[UIButton]和[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]的演员阵容!不会失败,这让我怀疑编译器会正确推断类型

可能与此相同类型的编译器错误:您应该向Apple发送错误报告。可能与此相同类型的编译器错误:您应该向Apple发送错误报告。