0
class Actor {
let agent: String? = "nobody"
init(agent: String){
self.agent = agent // error: immutable value 'self.agent' may only be initialized once
}
}
let John = Actor(agent: "xyz")
내가 여기 일어나고있는 순서에 대한 혼란 스러워요 (나는 var
과 let
의 차이점을 충분히 알고 있어요). 하지만 왜 그 오류가 발생합니까? 나는 init
방법을 사용하고있는 경우클래스의 인스턴스가 초기화 될 때 시퀀스는 무엇입니까?
- , 그 내가 기본 매개 변수를 사용하지 않는 것을 의미하지 않는다?
- 왜 다른 기본값으로 기본 상수를 변경할 수 없습니까?
그래, 기본값을 설정할 값이 몇 개 밖에없는 경우 분명히 갈 수 있습니다. 2 ~ 3 개 이상인 경우 모든 기본값을 설정하는 매개 변수가없는 별도의 초기화 프로그램을 정의하는 것이 좋습니다. – Alexander
@Alexander 여기 내가 모르는 역설은 속성을 읽거나 읽지 않는다는 것입니다. 만약 당신이 읽고, 그렇다면 내 대답, 내 코드는'let agent : String? '과 같이 실패해야한다. 그렇지 않으면이 라인을 읽는다는 것인가? 왜냐하면 그것은 바보 같기 때문에 기본적으로 무응답으로 여기에 언급 된 바와 같이 붙어 있기 때문입니다 (http://stackoverflow.com/questions/38942325/constant-unassigned-optional-will-not-be-nil-by-default). 기본적으로 예외입니다 ** 만약 당신이 그것을 읽지 않는다면, 나는 오류가 발생해서는 안됩니다. – Honey
@Honey 나는 너의 말을 이해하지 못한다 – Alexander