Por que recebo o erro "Variável usada antes de ser inicializada" na linha em que inicializo a variável no Swift?

Estou lutando para entender por que estou recebendo esse erro de compilador em um projeto iOS usando o Swift. Se eu criar a seguinte classe:

class InitTest {

    let a: Int
    let b: Int
    let c: Int

    init () {
        self.a = 3
        self.b = 4
        self.c = self.runCalculation()
    }

    func runCalculation () -> Int {
        return self.a * self.b
    }
}

Eu recebo um erro do compilador na linhaself.c = self.runCalculation() dizendo "Variável 'self.c' usada antes de ser inicializada".

No começo, pensei que era porque o compilador não podia verificar se orunCalculation() método não acessouself.c, mas tentei misturar um pouco o método init:

init () {
    self.a = 3
    self.c = self.runCalculation()
    self.b = 4
}

e desta vez o erro é "Variável 'self.b' usada antes de ser inicializada" (na mesmaself.runCalculation() linha). Isso indica que o compiladoré capaz de verificar quais propriedades o método acessa e, até onde eu vejo, não deve ter nenhum problema com o caso inicial.

É claro que este é um exemplo trivial e eu poderia refatorar facilmente para evitar chamar o método de cálculo, mas em um projeto real, poderia haver vários cálculos, cada um dos quais poderia estar bastante envolvido. Eu gostaria de poder separar a lógica para manter as coisas legíveis.

Felizmente, há uma solução simples:

init () {
    self.a = 3
    self.b = 4

    self.c = 0
    self.c = self.runCalculation()
}

(ou usando um inicializador de propriedadeslet c = 0), mas gostaria de entender por que o compilador tem um problema com o primeiro exemplo. Estou faltando alguma coisa ou é uma restrição desnecessária?

questionAnswers(1)

yourAnswerToTheQuestion