왕초보 Kotlin 기초 공부 #3

코틀린 기본 프로젝트 구조

프로젝트
코틀린으로 어플리케이션을 짤때 관련된 모든 내용을 담은 틀

모듈
직접 만들수도 있고 필요할 기능을 라이브러리로 가져올 수도 있다.
모듈안에는 다수의 폴더와 파일이 존재 할 수 있다.

패키지
개발시에 소스코드의 소속을 지정하기위한 논리적 단위

보통 패키지 이름을 지을때는 도메인을 거꾸로 배치한 뒤, 프로젝트 명을 붙이고
그뒤에 기능을 세분화 하는 방식으로 많이함.

코드파일을 패키지로 묶는 방법
package com.youtubo.test
와 같이 상단에 선언.

같은 패키지 내에서는 변수,함수,클래스를 서로 공유 해서 쓸 수 있지만
패키지가 다르면 서로 가져다 쓸수 없고 import 해야 쓸 수 있다.



스코프 : 변수,함수,클래스의 공용범위를 제어하는 단위
접근제한자 : 스코프 외부에서 내부로의 접근을 제어 .


패키지 클래스 함수 변수 단위 일수도 있고 각각 안에서 정의 될수도 있다.

스코프의 3가지 규칙

1. 스코프 외부에서는 스코프 내부의 멤버를 '참조연산자'로만 참조 가능
   ex) a.eat()

2. 동일 스코프 내에서는 멤버들을 공유 할수 있다.


동일한 스코프 안이므로 가져다 쓸 수 있다.

3. 하위 스코프에서는 상위 스코프 멤버를 재정의 할 수 있다.

원래는 같음 멤버를 만들어서는 안된다. 하지만 하위 스코프에서는
같은 멤버를 만들어 사용 가능하다.


접근제한자

public -> 함수 선언시 앞에 붙여 사용
internal -> 클레스 선언시 앞에 붙텨 사용
private ->변수 선언시 앞에 붙여 사용
protected

패키지 스코프에서
public 이 기본값으로 어떤 패키지에서도 접근 가능
internal 같은 모듈내에서만 접근 가능
private 같은 파일 내에서만 접근 가능
protected 미사용

클래스 스코프에서
public 클래스 외부에서 늘 접근 가능
private 클래스 내부에서만 접근 가능
protected 클래스 자신과 상속받은 클래스에서 접근 가능
internal 미사용

고차함수
함수를 마치 클래스에서 만든 인스턴스처럼 취급 하는 방법
함수를 패러미터로 넘겨줄수도 잇고, 결과값으로 반환받을 수도 있는 방법



람다함수
파라미터를 넘겨줄 함수를 굳이 정의 할필요가 있을까?


함수를 변수로 사용할 수 있다는 이점이 있다.

람다함수의 특별한 케이스
1. 람다함수도 여러 구문의 사용이 가능하다.
2. 파러미터가 없는 람다함수는 실행할 구문들만 나열 하면 된다.
3. 파러미터가 하나뿐이라면 it을 사용한다.

스코프함수
함수형언어의 특징을 좀더 편리하게 사용할수 있게 해주는것
인스턴스의 속성이나 함수를 좀 더 깔끔하게 불러 쓸 수 있다.

apply
인스턴스를 생성 한 후 변수에 담기 전에 초기화 과정에서 많이사용
이해 안됨...


run
apply 처럼 스코프 안에서 참조연산자를 사용하지 않아도된다는 점은 같으나,
일반 람다함수처럼 인스턴스 대신 마지막 구문에결과 값을 반환한다
이미 인스턴스가 만들어진경우에 사용.


with
run 과 같은 기능을 가지지만 단지 인스턴스를 참조연산자 대신 파라미터로 받음

a.run{}
with(a){}

also/let

처리가 끝나면 인스턴스를 반환 apply/also
처리가 끝나면 최종값을 반환 run/let

apply,run 은 참조연산자 없이 인스턴스의 변수 쓰지만
run,let 은
마치 파라미터로 인스턴스를 넘긴것 처럼 it으로 사용 가능

공부내용 전리가 필요함....
아직 개념이 제대로 잡히지 않은 것 같다.

댓글

이 블로그의 인기 게시물

Finance Index (개인정보처리방침)

왕초보 Kotlin 기초 공부 #1

왕초보 Kotlin 기초 공부 #4