Estrutura rápida e mutante

Há algo que eu não entendo completamente quando se trata de alterar tipos de valor no Swift.

Como o iBook "A linguagem de programação Swift" afirma:Por padrão, as propriedades de um tipo de valor não podem ser modificadas de dentro de seus métodos de instância.

E assim, para tornar isso possível, podemos declarar métodos com omutating palavra-chave dentro de estruturas e enums.

O que não está totalmente claro para mim é o seguinte: você pode alterar um var de fora de uma estrutura, mas não pode alterá-lo a partir de seus próprios métodos. Isso parece contra-intuitivo para mim, como nas linguagens orientadas a objetos, você geralmente tenta encapsular variáveis para que elas possam ser alteradas apenas por dentro. Com estruturas, isso parece ser o contrário. Para elaborar, aqui está um trecho de código:

struct Point {
    var x = 0, y = 0
    mutating func moveToX(x: Int, andY y:Int) { //Needs to be a mutating method in order to work
        self.x = x
        self.y = y
    }
}

var p = Point(x: 1, y: 2)
p.x = 3 //Works from outside the struct!
p.moveToX(5, andY: 5) 

Alguém sabe o motivo pelo qual estruturas não podem alterar seu conteúdo de dentro de seu próprio contexto, enquanto o conteúdo pode ser facilmente alterado em outro lugar?

questionAnswers(5)

yourAnswerToTheQuestion