Swift에서 불변 변수를 let
으로 표시합니다.왜 Swutable에서 변경할 수없는 객체의 속성을 변경할 수 있습니까?
내가 이해하지 못하는 이유는 속성을 변경 한 이유입니다. 예 :
let lbl = UILabel()
lbl.textAlignment = .Right()
왜 textAlignment
을 변경할 수 있습니까? 재산을 돌연변이시킨 덕분에 우리는 변하지 않은 변수 lbl
을 돌연변이 시켰습니까?
Swift에서 불변 변수를 let
으로 표시합니다.왜 Swutable에서 변경할 수없는 객체의 속성을 변경할 수 있습니까?
내가 이해하지 못하는 이유는 속성을 변경 한 이유입니다. 예 :
let lbl = UILabel()
lbl.textAlignment = .Right()
왜 textAlignment
을 변경할 수 있습니까? 재산을 돌연변이시킨 덕분에 우리는 변하지 않은 변수 lbl
을 돌연변이 시켰습니까?
는 Swift Programming Language에 따르면, 일정한 구조체의 특성은 일정하지만, 일정한 클래스 가변 특성을 가질 수있다. 당신이 구조의 인스턴스를 생성하고 일정에 해당 인스턴스를 할당하면 그들의 말에
,것은, 당신은 ...
그들이 변수 속성으로 선언 된 경우에도 인스턴스의 속성을 수정할 수 없습니다참조 유형 인 클래스에 대해서는 동일하지 않습니다. 참조 유형의 인스턴스를 상수에 할당하는 경우에도 해당 인스턴스의 변수 속성을 변경할 수 있습니다.
감사합니다. 완벽하게 설명합니다. 할 수있을 때 받아 들일 것입니다. –
클래스 유형은 참조 유형입니다. 값은 객체에 대한 포인터입니다. 변경할 수 없다는 것은 다른 객체를 가리 키기 위해 참조를 변경하지 않는다는 것을 의미합니다. 그것은 당신이 가리키고있는 대상으로 할 수있는 것과 아무 상관이 없습니다.
* 변수/바인딩 *을 다른 값으로 다시 할당 할 수 없습니다. 이것만으로도 변수의 평가 결과로 생기는 객체의 가변성에 대해서는 아무 것도 말하지 않습니다. 이는 Java 및 C#의'final/readonly' 변수/필드와 동일합니다. – user2864740