본문 바로가기

kotlin, java, android

(6)
[Kotlin] First-class / Function types / Function literals / Lambda Programming Language에서의 First-class란? 다음 3가지 조건을 만족하는 경우, first-class가 된다. ① 변수와 자료구조에 저장될 수 있어야 한다. ② 다른 함수에 인자로 전달될 수 있어야 한다. ③ 다른 함수로부터 return될 수 있어야 한다. 이때 등장하는 '다른 함수'를 high-order function이라 한다. 갑자기 이걸 왜 알아보고 있느냐 하면, kotlin에서 function이 위의 3가지 조건을 모두 만족하는 first-class이기 때문이다! 이전 글에서 이야기한 kotlin의 function이 expression이라는 점과 연결되는 부분이다. 내가 익숙한 c에서도 함수가 인자로 전달되는 경우가 있는데, 이땐 함수 포인터가 전달되는 것이었다. 하지만 ..
[Kotlin] varargs(variable arguments) kotlin에서 함수는 variable arguments, 즉 type이 정해지지 않은 인자를 받아올 수 있다. 아래와 같은 형식이다. fun hello(vararg hoho : T): List { /*block body of hello*/ } : type이 정해지지 않아서 커스터마이징 할 수 있다! hello : 함수 이름 vararg : type이 정해지지 않은 parameter가 뒤에 나올 것임을 의미하는 keyword hoho : parameter 이름 T : type이 정해지지 않은 parameter의 type자리에는 T를 쓴다. List : hello 함수의 return value는 type이 정해지지 않은 elements를 갖는 List다.
[Kotlin] function expression / function parameter / single-expression function Function Expression kotlin의 정말 거의 모든 것은 expression이다. cf) expression 이다 == value를 갖는다 == type이 있다 수많은 종류의 expressions 중에서도 눈에 띄는 것은 function도 expression이라는 점이다. func은 뒤에서 보고.. 우선 line2의 if statement가 expression이라는 설명을 해보겠다. 이 if문은 true or false라는 value를 갖고, bool type인 expression인 것이다! (간단ㅎㅎ) 충분히 납득할만 했던 if문을 뒤로하고.. 이번에 println문을 살펴보자. line1의 println문은 딱히 value가 없는 듯하다.. ㅇㅈ? 그러나 kotlin은 이 상황에서도 의..
[kotlin] Lists and arrays / Null safety 0. elements가 중복가능하다 = ordering이 있다 = indexing이 가능하다 set list array ordering 및 indexing X O O elements 중복 가능 여부 X O O Lists 1. list는 generic하다. (elements로 올 수 있는 자료형이 여러 종류이다.) listOf() mutableListOf() - immutable - 한번 만들면 read-only다. (elements 추가, 제거, 변경 모두 불가) - list의 default - mutable - elements의 추가, 제거, 변경 모두 가능하다. 예시로 만들어본 코드에 이상한 점이 보인다. val 이라고 선언하였으니 이 변수는 변경 불가능한 것이 아닌가? 제거가 가능하다니? 설명하자면..
[kotlin] primitives와 objects / datatypes / variables / ranges / loop Primitives와 objects 1. 우선 primitive type(원시 타입)과 wrapper class(래퍼 클래스)에 대해 간단히 알아보자. primitive type → wrapper class 객체화 예를 들어 primitive type int는 wrapper class Integer로 객체화, 즉 객체로 뤠핑된다. 객체로 포장함으로써... 장점 : null 값을 대입할 수 있고, 메소드도 호출할 수 있게 된다. 단점 : 메모리 측면에서 비효율적일 수 있다. 2. kotlin에는 primitive types가 없고, 전부 objects로 취급된다. NO primitives, ALL objects!! 3. kotlin을 구현의 관점에서 바라보면, 두가지로 나눠 생각해야한다. ① 숫자 (num..
[Kotlin] 기본 문법 정리 1. Program entry point kotlin의 program entry point는 main 함수다. 2. 표준 출력 print : 그냥 단순한 standard output이다. println : print + \n 이다. cf) 세미콜론(;)은 붙히지 않는다. print("hello?") println("hello??") 3. 함수에 인자(argument) 추가하기 fun sum(a: Int, b: Int): Int { return a + b } fun main(args: Array) { val c = sum(3, 5) println(c) } 색칠한 3, 5처럼 그냥 인자를 ,로 연결하여 입력하면 intellij가 알아서 로 만들어준다!! 신기행ㅎㅎ