Intro
- registerActivityResult 구현연습중 제목과 같은 경고를 보았다. 이런 경고가나오게된 코드는 아래와 같다.
getContents = registerForActivityResult(ActivityResultContracts.StartActivityForResult(), {
})
해결책
- 해당 경고의 의미는 람다식 사용할때 괄호 밖에서 사용하라는 것이다. 고치면 아래와 같다.
getContents = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
}
Why?
- kotlin에서 람다식을 표현하는 방법에는 총 3가지가 있다고한다.
- 1번(괄호안에 표현)
getContents = registerForActivityResult(ActivityResultContracts.StartActivityForResult(), { })
- 2번(괄호 밖에서 표현)
getContents = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { }
- 3번(소괄호 X)
onClickListener { }
- 안드로이드 스튜디오에서는 1번 사용에대해 경고한 것이다.
이렇게 3가지 방식을 놔둔 이유?
- 때에따라 쓰임새가 다르기 때문이다. 2번의 경우 마지막에 Function이 오는경우에만 사용할 수 있다. 만약 앞에 Function이 있다면 따로 메서드를 만들어서 대입해야할 것이다. 내가 이해한 핵심은 코드를 최대한 간결하게 짤 수 있으면 그렇게 하라는 것으로 이해했다 끗!