일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 코틀린
- Redux
- readAsDataURL
- 리액트
- Android
- state_checked
- 자바스크립트
- Node
- itemBackground
- toolkit
- javaSrcript
- 커스텀옵션메뉴
- JS
- custom
- JavaScript
- Hooks
- Menu
- hoos
- 메뉴클릭
- 팝업메뉴 꾸미기
- 팝업메뉴
- nodejs
- ContextAPI
- Dialog
- bottomNav
- 옵션메뉴꾸미기
- 안드로이드
- framework
- redux/toolkit
- react
- Today
- Total
대기업을 향한 디벨롭 블로그
Scope 함수 ( apply , run , with , also , let ) 본문
apply
인스턴스 생성후 변수에 담기전에 초기화 과정할때 많이 쓰임 참조연산자를 쓰지않고 기능을 구현할 수 있음. 예제를 보고 이해하자. 말로 설명하기힘듬
여기 클래스가 있다. bookname 과 price 두가지를 받고 discount함수로 price(가격)을 2000원 빼주는 기능이다.
클래스를 인스턴스 하여 객체를 생성해주었다. a라는 객체에 bookname에 "SALE : " 이라는 문자열을 붙히고 a.discount()를 사용해 가격을 2000원 할인하였다. 하지만 apply함수를 이용하여 다시 짜보겠다. 달라지는게 어떤것인지 봐보자
인스턴스할때 .apply를 써서 중괄호를 열고 람다함수를 만들어준다. (객체를만들어주면서 초기화와 설정을 같이한다고봄) 안에있는 코드에는 참조연산자를 쓰지않는다 .apply를 써서 참조연산자없이 쓸 수 있다. 그리고 생성되자마자 바로 조작을 해주며 더 간결하고 깔끔하다 볼 수 있다. 이정도가 .apply함수라고 볼 수 있다.
run
run도 apply와 똑같이 참조연산자를 사용하지않는다.
이런식으로 a.run은 a객체의 모든것을 참조하는데 참조연산자만 없이 사용가능하다. 위에 this : Book 이라고 되있는데 이 객체는 Book이라는 클래스에 의해 인스턴스된거다. 위 사진에는 없지만 변수에 담을때에는 마지막구문이 반환되어 변수에 할당된다.
마지막 구문은 할당되기때문에 price라는 변수가 리턴되어 bookprice라는 변수에 들어간다.
with
with은 run과 차이점은 객체를 파라미터로 쓴다는것 외에는 똑같다.
also/let
also와let은 apply와 run 똑같은 기능을 하지만 scope밖에있는 같은이름의 변수와함수 겹치는걸 방치하기위해 it을 통해서 인스턴스를 사용할 수 있다. 최상위에 변수 a 가 있고 b객체안에도 a라는변수가 있다고하면 b.run 함수를통해 a를사용할려고하는데 최상위변수 a를 사용하게된다. 그때 b.let함수를 써서 it.a를 쓸 수 있게된다.
Scope함수에 대해 알아보았다.
'나는안드로이드개발자' 카테고리의 다른 글
옵저버패턴 , 객체지향의 다형성 (0) | 2022.05.27 |
---|---|
companion Object (동반자 오브젝트) (0) | 2022.05.24 |
람다란.. (0) | 2022.05.18 |
override 추상화 interface (0) | 2022.05.17 |
Kotlin 클래스의 상속 (0) | 2022.05.17 |