为啥我在 Swift 中的初始化程序不断收到“调用中的额外参数”
Posted
技术标签:
【中文标题】为啥我在 Swift 中的初始化程序不断收到“调用中的额外参数”【英文标题】:Why do I keep getting "Extra Argument in Call" for my initializer in Swift为什么我在 Swift 中的初始化程序不断收到“调用中的额外参数” 【发布时间】:2015-02-03 15:20:05 【问题描述】:对于 init 函数中的重复值,我不断收到错误“调用中的额外参数”。为什么?
class Point<T>
/* n dimensional point
multiline comments ...
*/
let point : [T]
init(dimensions: Int, rValue: Float = 0.0)
self.point = [T](count: dimensions, repeatedValue:rValue)
【问题讨论】:
【参考方案1】:带有repeatedValue的init的定义是
Array<T> init(count: Int, repeatedValue: T)
您的rValue
必须是T
类型
【讨论】:
【参考方案2】:如果您需要默认值,您的 T 也必须是 FloatLiteralConvertible, 这个:
Array<T> init(count: Int, repeatedValue: T)
不会这样做。但是,这将起作用并且更有意义,因为您不希望例如“猫”之类的点我猜... 解决方案:
class Point<T:FloatLiteralConvertible>
/* n dimensional point
multiline comments ...
*/
let point : [T]
init(dimensions: Int, rValue: T = 0.0 )
self.point = [T](count: dimensions, repeatedValue:rValue)
var pd = Point<Double>(dimensions: 10, rValue: 1.0)
var pf = Point<Float>(dimensions: 10, rValue: 1.0)
dump(pd.point)
dump(pf.point)
【讨论】:
以上是关于为啥我在 Swift 中的初始化程序不断收到“调用中的额外参数”的主要内容,如果未能解决你的问题,请参考以下文章
为啥我在尝试设置 PayPal 付款时在生产中不断收到 INVALID_RESOURCE_ID 错误?
Swift:在从初始化程序返回之前,不会在所有路径上调用“super.init”?