Arrays 是否可以对数组中的所有对象应用更改而不使用;对于每一个“;或;至于;在Swift 3中?

Arrays 是否可以对数组中的所有对象应用更改而不使用;对于每一个“;或;至于;在Swift 3中?,arrays,swift,Arrays,Swift,比如说 var imageViewArray:UIImageView = [imageView1,imageView2,imageView3] 我想将相同的imageView.image=img或imageView.isUserInteractionEnabled=false更改为数组内的所有图像视图1。这是一个数组 首先,它不是 var imageViewArray:UIImageView 但是 因为您想要一个UIImageView数组,对吗 2.命名约定 其次是Swift,我们不在变量的

比如说

var imageViewArray:UIImageView = [imageView1,imageView2,imageView3]
我想将相同的
imageView.image=img
imageView.isUserInteractionEnabled=false
更改为数组内的所有图像视图

1。这是一个数组 首先,它不是

var imageViewArray:UIImageView
但是

因为您想要一个
UIImageView
数组,对吗

2.命名约定 其次是Swift,我们不在变量的类型后命名,因此
imageViewArray
变为
imageViews

3.地图 现在,如果你真的讨厌forein和foreach,你可以写

imageViews = imageViews.map { imageView in
    imageView.isUserInteractionEnabled = true
    return imageView
}
或者正如博丹·伊万诺夫在评论中所建议的那样

imageViews.map { $0.isUserInteractionEnabled = true }
4.收尾 这个答案向您展示了如何使用错误的结构(map)来做一些应该用正确的结构(对于in)来做的事情

这就是有几个结构的要点,一切都可以通过
IF-THEN
GOTO
来实现。但是好的代码使用最适合特定场景的结构

因此,这种情况下的最佳解决方案绝对是针对in的
或针对每个

imageViews.forEach { $0.isUserInteractionEnabled = true }

for in
循环或
forEach(:)
有什么问题?另外,将
imageViewArray
注释为
UIImageView
也是毫无意义的。这没什么错。我只想知道在Swift 3中是否有任何选择,就这样。我知道它的指定是荒谬的,但是考虑一下这个代码< ValueIVIEVIEWRAI[= [uIIVIEVIEW]()] />代码,但是对于< < /COD>循环>和<>代码> Frace>(代码:< /代码>)是专门设计来迭代数组的,允许调用方与元素一起做一些事情。当然,还有其他方法可以做到这一点——你可以给数组下标3次并手动改变每个元素,你可以创建一个扩展来专门指定元素的
image
属性。但这些都是非常糟糕的解决方案。现在还不清楚你到底在这里寻找什么。简而言之:不,不是。只是想澄清一下:你也可以编写
imageViews.map{$0.isUserInteractionEnabled=true}
,所以会有一个-liner@BohdanIvanov:正确。因为
UIImageView
是一个类,所以它可以工作。它在结构上不起作用。我将更新我的代码,谢谢。@BohdanIvanov,但这会创建一个调用方从未使用过的数组——编译器会正确地对此发出警告(尽管将结果分配回
imageViews
也是毫无意义的)。没有结果数组的等价物是
imageViews.forEach{$0.isUserInteractionEnabled=true}
,因此我们回到了开始的地方。在本例中,仅为了避免使用
forEach
(出于某种原因)而在
forEach
上使用
map
是一个非常糟糕的主意。@Hamish,我完全同意,只是不想阻止任何人使用sugar语法。
imageViews.forEach { $0.isUserInteractionEnabled = true }