如何解决具有可变参数属性的Swift协议
我正在尝试使用Swift
属性创建Protocol
Variadic
。根据文档,可以在一个函数中做到这一点:
func arithmeticmean(_ numbers: Double...) -> Double {
var total: Double = 0
for number in numbers {
total += number
}
return total / Double(numbers.count)
}
arithmeticmean(1,2,3,4,5)
但是尝试在如下协议中创建Variadic
参数:
struct ProductModel {
}
protocol SubscriptionModel {
var products: ProductModel... { get set }
}
导致此错误:
是否无法在Variadic
内创建Protocol
属性?
解决方法
是否无法在协议中创建可变参数属性?
这是不可能的,但这只是一个更大的事实的反映,即可变参数不是类型。您在这里尝试说products
的类型为Variadic ProductModel。但是没有这种类型。不能将变量 ever 声明为该类型;不只是协议。
可变参数表示法可能出现的唯一位置是实际的func
声明中的参数类型,但这只是一种表示法,而不是类型。可以这样说,该函数可以采用一系列实际类型(Double,在您的示例中为文档)。
因此,如果您的协议要声明带有可变参数的方法,那很好。但是,可变参数类型的变量的想法是没有意义的。
因此,只需声明变量的类型为[ProductModel]
。那就是你怎么说“ ProductModel对象的一些未知数”。实际上,这就是可变参数表示法的全部含义,因为参数是作为数组接收在函数体内的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。