可能的Swift 3编译器错误:连接[UIButton]的数组!
我想我刚刚在swift编译器中发现了最奇怪的错误 如果您尝试连接两个隐式展开的按钮数组,效果很好,但一旦您尝试连接同一类型的第三个数组,它就会说可能的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
二进制运算符“+”不能应用于类型[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发送错误报告。