为啥我在 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&lt;T&gt; 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”?

为啥我在 Swift 中没有收到来自 Firebase 的推送通知?

AVAudioRecorder swift 2

为啥函数调用需要 Swift 中的参数名称?

为啥我在地图箭头功能中不断收到未定义的错误?