저는 init 블록을 사용하여 생성자에 값을 할당 한 경우에도 내 표준 변수의 값이 기본 값으로 대체되는 상황을 최근에 보았습니다. 내가 뭘하려Kotlin의 클래스에서 init 블록 위치
는이었다
class Example(function: Example.() -> Unit) {
init {
function()
}
var name = "default name"
}
// assigning it like this:
val example = Example { name = "new name" }
// print value
print(example.name) // prints "default name"
조금 어려움을 겪고 후, 나는 발견했다 그 초기화 블록 문제의 위치. 클래스의 마지막에 init 블록을두면, 먼저 기본값을 사용하여 이름을 초기화 한 다음 값을 "새 이름"으로 바꾸는 function()을 호출합니다.
그리고 먼저 입력하면 이름을 찾을 수 없으며 속성을 초기화 할 때 이름이 "기본 이름"으로 바뀝니다.
이것은 나에게 이상합니다. 왜 이런 일이 일어 났는지 설명 할 수 있습니까?
클래스의 초기화가 위에서 아래입니다 올바른 방법입니다, 초기화 블록은 면제되지 않습니다. –
이 연습은 단지 Kotlin 초기화를 이해하기위한 것입니까? 그렇지 않다면'class Example (val name : String = "default name")' – Mikezx6r
으로이 작업을 수행 할 수 있습니다.이 작업은 내 라이브러리 (https://github.com/kirtan403/k4kotlin)에서 상단에 전체 기능이 중단되었습니다. – kirtan403