Class 类初始化中的可选参数

Class 类初始化中的可选参数,class,swift,initialization,sprite-kit,init,Class,Swift,Initialization,Sprite Kit,Init,我正在使用Swift、Sprite工具包和Xcode 6 我有一个类声明如下: class Obstacles: SKSpriteNode { init(initTime: Int, speed: CGFloat, positionX: CGFloat, rotationSpeed: CGFloat) { self.initTime = initTime self.rotationSpeed = rotationSpeed self

我正在使用Swift、Sprite工具包和Xcode 6

我有一个类声明如下:

class Obstacles: SKSpriteNode
{
    init(initTime: Int, speed: CGFloat, positionX: CGFloat, rotationSpeed: CGFloat)
    {
        self.initTime = initTime
        self.rotationSpeed = rotationSpeed
        self.positionX = positionX

        super.init(texture: SKTexture(imageNamed: "Rectangle"), color: SKColor.redColor(), size: CGSize(width: 20, height: 20))
        self.speed = speed
    }

    var initTime: Int
    var positionX: CGFloat
    var rotationSpeed: CGFloat = 0
}
var myVariable = Obstacles(initTime: 100, speed: 3.0, positionX: 10.0, rotationSpeed: 0.0)
所以我可以像这样给这个类分配一个变量:

class Obstacles: SKSpriteNode
{
    init(initTime: Int, speed: CGFloat, positionX: CGFloat, rotationSpeed: CGFloat)
    {
        self.initTime = initTime
        self.rotationSpeed = rotationSpeed
        self.positionX = positionX

        super.init(texture: SKTexture(imageNamed: "Rectangle"), color: SKColor.redColor(), size: CGSize(width: 20, height: 20))
        self.speed = speed
    }

    var initTime: Int
    var positionX: CGFloat
    var rotationSpeed: CGFloat = 0
}
var myVariable = Obstacles(initTime: 100, speed: 3.0, positionX: 10.0, rotationSpeed: 0.0)

但是,例如,如果我不想初始化rotationSpeed值,并将其默认为0.0,我如何才能做到这一点?我无法删除该参数,它会导致一个错误…

您想要的是为rotationSpeed设置一个默认值,但您忘记了声明类型并指定一个默认值。不要说
rotationSpeed:0.0)
而是说
rotationSpeed:CGFloat=0
。使您的初始值设定项如下所示:

init(initTime: Int, speed: CGFloat, positionX: CGFloat, rotationSpeed: CGFloat = 0)

你也可能会发现这篇文章也很有用

我已经看过这篇文章了,但再次阅读后我明白了,谢谢,我的错