gpt4 book ai didi

swift - 为什么我的 Swift 数组扩展不起作用?

转载 作者:行者123 更新时间:2023-11-28 06:30:38 27 4
gpt4 key购买 nike

我正在尝试运行这段代码,但正在触发此错误

无法使用“(Int)”类型的参数列表调用“append”

我做错了什么?

extension Array {        
mutating func random100() {
for _ in 0 ... 99 {
self.append(Int(arc4random() % 10)) // Cannot invoke 'append' with an argument list of type '(Int)'
}
}
}

最佳答案

您必须将扩展限制为 Int 类型:

extension RangeReplaceableCollection where Iterator.Element == Int {
mutating func random100() {
for _ in 1...100 {
append(Int(arc4random_uniform(10)))
}
}
}

并且由于您不能直接约束 Array,因此您必须约束定义 append 方法的协议(protocol)。

然后你可以在任何 Int 数组上使用它:

var myArray = [3,5,6]
myArray.random100()

关于swift - 为什么我的 Swift 数组扩展不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40480739/

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