使用类中的函数初始化变量

时间:2015-12-07 16:06:55

标签: swift class initialization

我的课程类似于下面的课程。它是简化的,但它说明了我的问题。我想用“square”函数初始化“number”变量。

class SomeClass {
    let number: Int
    func square (num: Int) -> Int {
        return num * num
    }
    init(num: Int) {
        number = square(num)
    }
}

但是当我创建一个类的实例时。例如

let instance = SomeClass(num: 2)

它抛出错误:在初始化所有存储属性之前,在方法调用'square'中使用'self'。

如何使用函数初始化数字?

2 个答案:

答案 0 :(得分:7)

在这种特殊情况下,您可以使用类方法

class SomeClass {
    let number: Int
    class func square (num: Int) -> Int {
        return num * num
    }
    init(num: Int) {
        number = SomeClass.square(num)
    }
}

答案 1 :(得分:-2)

唯一的方法是,如何做你想做的事情,将数字声明为var并用一些值初始化它

class SomeClass {
    var number: Int = 0
    func square (num: Int) -> Int {
        return num * num
    }
    init(num: Int) {
        number = square(num)
    }
}

let instance = SomeClass(num: 2)
instance.number // 4