목록Kotlin (79)
Hello, Android!

클로저는 람다식 또는 함수 내부에서 외부에 선언된 변수에 접근하는것을 의미한다 위의 코드에서는 addNum함수 호출시 넘겨주는 람다식에서 main의 지역 변수인 result에 값을 할당하고있다 result는 main함수의 지역변수이기때문에, 람다식의 범위 밖이라 x+y의 값을 result에 할당하는것이 불가능 할것 같지만 코틀린에서는 클로저를 지원하기때문에 외부 변수인 result에 접근이 가능하다 이렇게 람다식 내부에 있는 외부 변수를 포획(captchure)한 변수라고 한다 지역변수들은 서로 다른 스택에 저장이 되어 함수가 종료되면 사라진다 하지만 클로저가 포획한 변수는 참조가 유지되어, 함수가 종료되어도 사라지지 않는다 이러한 클로저에도 조건이 있다 - final 변수를 포획한 경우 변수 값을 람다..

코틀린의 시퀀스는 요소의 크기를 특정하지 않고 나중에 결정이 가능한 컬력션이다 generateSequence()함수를 이용하여 시퀀스를 만들수 있다 매개변수가 시드 로써 시작하는 요소의 값이 된다 시퀀스는 generateSequence함수 호출시 바로 생성되는것이 아닌 toList(), count()함수가 호출되는 시점에서 컬렉션이 생성된다 즉 generateSequence(1) { it * 2 } 에서는 시퀀스에 대한 시드값, 식만 정하고 seq.take(5).toList() 에서 take의 매개변수가 컬렉션의 길이가 되며 toList()로 list컬렉션으로 반환한다 시퀀스 에서도 map, filter를 사용할수도 있다 map과 filter는 각각 호출될때마다 새로운 list를 만들어서 반환을 한다 예..

- 검색 - elementAt : 인덱스에 해당하는 요소를 반환한다. 매개변수가 컬렉션의 인덱스 범위를 벗어나면 ArrayIndexOutOfBoundsException에러가 발생하니 주의! - elementAtOrElse : 첫번째 매개변수는 검색할 인덱스 번호 두번째 매개변수는 인덱스가 범위 밖일때 첫번째 매개변수로 식을 처리한다. 즉 식의 it에 첫번째 매개변수가 들어간다 - elementAtOrNull : 매개변수가 인덱스 범위 밖일때는 null을 반환한다 - first : 해당 조건식을 만족하는 첫번째 요소를 반환한다 - last : 해당 조건식을 만족하는 마지막 요소를 반환한다 - firstOrNull : 조건식을 만족하는 첫번째 요소를 반환한다. 없으면 null반환 - lastOrNull : ..

- 잘라내기 - slice : 특정 범위를 잘라낸다. 1..2와 같이 .. 으로 전체적인 범위를 지정하거나 listOf로 특정 요소만 잘라내는것이 가능하다. listOf(0,2)와 같이 사용하면 0번 2번 인덱스의 요소만 잘라낸다 - take : 앞에서부터 매개변수로 넘겨준 만큼 잘라낸다 - takeLask : 뒤에서부터 매개변수로 넘겨준 만큼 잘라낸다 - takeWhile : 컬렉션의 앞에서부터 식의 결과에 만족하는 요소들만 잘라낸다 - takeLasWhile : 컬렉션의 뒤에서부터 식의 결과에 만족하는 요소들만 잘라낸다 - drop : 앞에서부터 매개변수로 넘겨준 만큼 잘라낸다 - dropLast : 뒤에서부터 매개변수로 넘겨준 만큼 잘라낸다 - dropWhile : 컬렉션의 앞에서부터 식의 결과에 ..

- 검사 컬렉션에 특정 요소가 존재하는지 검사하는지 확인을 위한 여러 함수들을 지원한다 - all : 컬렉션의 모든 요소에 대하여 조건이 true일때 true를 반환 - any : 컬렉션의 요소들중 조건식을 만족하는 요소가 하나 이상일때 true를 반환 - contains : 매개변수가 컬렉션에 요소로써 존재한다면 true를 반환 / contain대신 in을 사용하는것도 가능하다 - containasAll : 매개변수 컬렉션이 검사 대상 컬렉션에 전부 존재한다면 true를 반환 - none : 요소가 없으면 true를 있으면 false를 반환 / 조건식의 경우 식을 만족하는 요소가 없으면 true 있으면 false를 반환 - isEmpty : 컬렉션이 비어있으면 true, 데이터가 있으면 false를 반..

- 연산 코틀린의 컬렉션에서 연산자를 사용하면, 컬렉션에 대하여 요소를 더하거나 빼는 처리가 가능하다 연산자 + 를 사용하여 컬렉션에 요소를 추가하고 - 를 사용하여 제거가 가능하며 단순히 요소에 대하여 추가 삭제만이 아니라, 컬렉션을 컬렉션에 추가하고 제거하는것 또한 가능하다 - 집계 - forEach : 각각의 요소에 대하여 순환 처리를 하며, 요소를 람다식으로 처리한다 - forEachIndex : forEach와 동일하다 인덱스가 추가된다 - onEach : 각각의 요소데 대하여 람다식으로 처리한 뒤 컬렉션으로 반환받는다 - count : 특정한 조건에 해당하는 요소의 갯수를 반환한다 - max : 최댓값 요소를 반환한다 - min : 최솟값 요소를 반환한다 - maxBy : 식에 대하여 최댓값을..

일반적으로 함수는 한개의 객체를 반환한다만약 두개의 객체를 리턴하는 경우는 어떻게 해야할까?반환하고자 하는 두개의 객체를 담을수있는 클래스를 만들어, 저장하여 반환을 하는 방법이 있다하지만 이러한 방법은 두개의 객체를 반환하는 메소드가 늘어날때마다반환을 위한 클래스를 만들어야 한다 코틀린에서는 이러한 경우에 사용하기 위한 pair, triple이 존재한다pair은 두개의 객체를 저장할수 있으며, triple은 세개의 객체를 저장할수 있다 - pair Pair()에 저장하고자 하는 두개의 값을 넘겨주면 간단하게 두개의 객체를 저장할수 있다필요하다면 두개의 데이터의 타입을 지정할수도 있으며 지정하지 않는 경우에는 자유롭게 데이터 저장이 가능하다객체에서 데이터를 가져올때는 첫번째 데이터의 경우 .first 두..

Map은 키 와 값으로 데이터를 저장한다 키는 중복될수 없지만 값은 중복이 가능하다 만약 동일한 키에 서로 다른 값을 저장하게 되면 기존에 저장한 값은 없어지고 새롭게 저장한 값으로 저장된다 - Map 다른 컬렉션들과 같이 Map 또한 불변형과 가변형이 있다 mapOf는 불변형, mutableMapOf는 가변형 map이다 키, 값의 구조를 하고있기때문에 map 생성 시에도 to를 이용하여 키와 값을 명시하여야 한다 set의 요소에 접근할때는 배열처럼 map.[키] 혹은 map.get(키) 를 활용하여 접근이 가능하다 - put() : 가변형 set의 경우 매개변수로 키, 값을 넘겨주면 해당 셋에 저장이 가능하다 - remove() : 매개변수로 key를 받으며 해당 데이터를 삭제한다 - putAll() ..