gpt4 book ai didi

Swift:使用泛型使函数通用?

转载 作者:行者123 更新时间:2023-11-28 08:28:49 25 4
gpt4 key购买 nike

好的,所以我的几个类中有一个函数,用于看起来像这样的不同表格单元格。

func open() {
let array = [position, salary, jobDescription, applyButton]
switch openVerb {
case false:
for i in array {
i.hidden = true
}
openVerb = true
case true:
for i in array {
i.hidden = false
}
openVerb = false
}
}

现在这个已经用了几次所以我想把它变成一个通用的函数所以我不再重复了。问题是每个类都有一个不同大小的数组,该数组由 UIButtonUILabel 组成。该函数打开一个 Bool,然后隐藏或显示数组中的所有对象。

我尝试使用泛型,但我认为我犯了一个大错误。请帮忙。

func open(inout theSwitch: Bool, inout array: [<T>:UIView]) {
switch theSwitch {
case false:
for i in array {
i.hidden = true
}
theSwitch = true
case true:
for i in array {
i.hidden = false
}
theSwitch = false
}
}

最佳答案

为什么您认为这里需要泛型?这是我如何看待你的功能:

func open(inout theSwitch: Bool, array: [UIView]) {
for item in array {
item.hidden = !theSwitch
}
theSwitch = !theSwitch
}

用法:

var theSwitch = true
var array = [UIButton]()
var mixedViewsArray = [UIButton(), UILabel(), UIView()]

// switch time:
open(&theSwitch, array: array)
open(&theSwitch, array: mixedViewsArray)

您不需要使用对原始数组的引用,因为您只更改该数组中对象 的属性,所以您只使用它的引用。 open 函数适用于 UIView 类的任何子类,例如 UIButtonUITableViewCell(您甚至不需要将 mixedViewsArray 转换为正确的类型,它已经是 [UIView])。

关于Swift:使用泛型使函数通用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39338344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com