Move lambda argument out of parentheses

서정한·2023년 8월 1일
0

내일배움캠프 7기

목록 보기
14/66

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이 있다면 따로 메서드를 만들어서 대입해야할 것이다. 내가 이해한 핵심은 코드를 최대한 간결하게 짤 수 있으면 그렇게 하라는 것으로 이해했다 끗!
profile
잘부탁드립니다!

0개의 댓글