kotlin에서는 properties 사용가능 properties 자바에서 사용하는 것과 유사 변수를 좀더 강력하게 관리가능 get(),set()함수로 읽고 쓰기 관리 자기자신을 가리키는 예약어는 field
[lateinit] lateinit 예약어는 클래스에서 초기화없이 [변수:형] 만으로 선언가능 var 만 사용가능 변수형이 nullable 아니더라도 컴파일 가능 primitive 형은 불가능 [lazy] 코드 어디선가 사용할 때, 1회 초기화 실행된다(안드로이드 위젯 초기화시 유리) val로 선언 primitive 형도 가능 초기화 실행 시, 일련의 코딩 가능
수학에서 Infix는 증위표기법으로 사칙연산자(+,-,*,/)와 같이 좌측과 우측의 값이 존재하는 연산자 연사자를 대처하는 메소드 표기법 좌측은 객체 우측은 1개의 값 개발 시 서로 협의하에 쓰는 것이 좋다
()안에 변수를 나열한다. 일반적으로 Data class, List, Pair, Collection 의 반환값 순서대로 특정범위까지 가져올 수 있음 partion 메소드 사용법
수학자 하스켈 커링과 관련된 수학적방법 다중 인자를 받는 함수를 단일인자를 받는 함수로 만드는 함수 다중인자를 한개의 인자를 받는 함수로 사용 데이터 형 : (인자) -> (인자).. -> 리턴값 함수정의 : 함수(a) : 리턴값 = 함수(b) = 함수(c) : 리턴값{} 사용법 : 일반함수 (a,b,c) 함수 (a)(b)(c)
특정애플리케이션이나 Software에서 사용할 목적으로 만든 간이언어 Kotlin에서는 확장함수를 사용하여 구현가능함
closure는 함수형 프로그래밍에서 매우 중요한 개념이다 클로저는 자바스크립트 사용자들에게 친숙한 방법 외부함수의 변수를 내부함수에서 그대로 기억하고 사용할 수 있다 오래된 언어인 파스칼의 내부함수 사용법과 유사 마치 객체지향에서 사용하는 객체처럼 함수를 사용할 수 있다.
함수형 프로그래밍을 지원하는 중요확장함수들 .let()다음 결과를 {}안에 넘긴다 ->를 사용할 경우 변수명 지정이 가능 .apply{}다음 객체를(생성과 동시) 결과를 {}안에 넘긴다. 파스칼의 with문과 유사 {}안에서 코딩한 객체의 결과를 넘긴다 .run()는 {}안의 실행 결과값을 최종값으로 넘긴다 확장함수 이미정의된 클래스에 맴버함수를 정의 실행함과 동시에 객체정보 공유 가능 객체의 맴버들은 val(읽기전용)로 설정 파라미터로 함수를 넘기면 객체설정 및 이벤트 핸들러를 구현하기 편해짐
함수형 프로그래밍이 추구하는 것 함수나 객체의 mutable(변함) immutable(불변)을 관리하여 side effect를 줄이고자 함. 수학적인 사고로 코드를 간결하게 하고자 함 변수나 객체를 여기저기서 건들지 말자 (실행된 함수의 결과는 동일해야함) 순수함수 결과가 같은 함수, 외부 래퍼런스를 사용하지 않는 함수 입력된 값의 결과는 언제나 같아야함 전역적 참고 x 입력받아 처리 변수,객체,함수 모두 고차함수 함수형 변수를 입력받고 함수형 변수를 리턴하는 함수 상태 = 조건문 없는 순차적인 프로그래밍을 위해 함수를 받고 넘겨주는 구조 1등시민 일종의 정책적인 단어, 함수형 언어에서 함수가 가져야할 중요한 기능에 대해서 강조한 것 1. 변수나 데이터 구조안에 담을 수 있다 2. 파라미터로 전달할 수 ..
3가지 형태로 사용 class 명 앞에 사용해서 static class로 선언 class 내부의 특정멤버들만 ststaic(companion object) 이름없는 객체(클래스에서 상속)를 처리하할 때