전체 글 (63) 썸네일형 리스트형 코틀린: 컬렉션과 람다 컬렉션과 람다 어떤 형태의 람다 표현식이 필요한 지 생성 컬렉션은 데이터의 모임 : 배열(Array), 리스트(List), Set Map 은 수행 되는 것도 있고 안되는 것도 있다. fun main(args:Array){ val ar = arrayOf(20, 30, 17, 22) // 일반적인 람다 표현식을 대입 ar.forEach({n:Int -> println(n)}) // 매개 변수가 1개 이면 매개변수를 생략하고 it를 사용 가능 ar.forEach({println(it)}) // 람다 표현식이 함수의 마지막 매개 변수라면 () 외부에 작성 가능 ar.forEach{println(it)} // forEachIndexed // 2개의 매개 변수를 갖고 리턴이 Unit인 람다 표현식을 대입 // 첫번.. 코틀린 : Inline 함수 Inline 함수 함수는 호출할 때 동적으로 실행 함수 안에서 다른 함수를 호출하거나 재귀함수를 만들게 되면 동적으로 함수를 호출하게 되서 속도가 느려질 수 있습니다. 이 경우 함수의 선언문 앞에 inline을 추가하면 함수의 코드가 정적 코드로 변경되서 함수 호출 구문이 일반 실행 구문으로 변경 됩니다. 만들어진 클래스의 코드는 일반적으로 길어지게 됩니다. inline에서 함수가 매개 변수인 경우 정적 코드로 변환 되는 것을 제외하고자 할 때는 >>> noinline 을 추가 하면 됩니다. 매개 변수로 대입 된 함수에서 return을 할 수 없도록 하고자 할 때는 >>> crossinline이라고 붙여 주면 됩니다. 특정 함수로 리턴 할 때는 return @함수이름 을 이용하면 됩니다. Closure .. 코틀린 : 함수형 프로그래밍 함수가 일급 객체 함수도 하나의 사용자 정의 자료형 함수를 이용해서 변수를 생성할 수도 있고 함수 안에 변수, 함수, 클래스를 생성하는 것이 가능 Pure Function 사용을 권장 : 외부의 영향을 받지 않아야 한다 동일한 입력에 대해서 동일한 결과 생성 매개 변수가 있어야하고 리턴 되는 데이터가 있어야 한다. 데이터의 불변성 함수의 매개변수는 읽기 전용 함수의 결과를 리턴할 때는 새로운 데이터를 만들어서 리턴 장점 동시성 작업을 조금 더 쉽고 안전하게 구현 일급 객체란? //Kotlin에서는 함수가 일급객체 // 변수로 만들 수도 있고 함수 안에 함수나 클래스를 생성하는 것 가능 fun method(){ // 함수 안에서 함수 생성 가능 fun subFun(){ println("내부 함수") } /.. dynamite - BTS 가사 해석 Cos ah ah I’m in the stars tonight 오늘 밤 난 별들 속에 있으니 So watch me bring the fire and set the night alight 내 안의 불꽃들로 이 밤을 차란히 밝히는걸 지켜봐 Shoes on get up in the morn 아침에 일어나 신발 신고 Cup of milk let’s rock and roll 우유 한 잔, 이제 시작해볼까 King Kong kick the drum rolling on like a rolling stone 킹콩 드럼을 연주해, 구르는 돌처럼 거침 없이 Sing song when I’m walking home 집으로 걸어 가며 노래해 Jump up to the top LeBron 높이 뛰어 올라 마치 LeBron 처럼.. 코틀린 : anonymous class, Companion, Singleton 익명 클래스 : 이름 없는 클래스, 이름 없는 객체 클래스의 인스턴스를 여러개 만들 필요가 없는 경우 클래스를 미리 만들어 두는 것은 자원의 낭비 클래스의 이름 없이 인스턴스를 바로 생성하기 위한 문법 val 인스턴스 이름 = object { 프로퍼티 메소드 } => 클래스 내부에서 생성하면 외부 클래스에서는 익명 클래스의 멤버를 접근 할 수 없음 val 앞에 private 을 추가해서 접근이 가능하도록 할 수 있다! 다른 클래스를 상속 받거나 인터페이스를 구현 할 때는 object 다음에 다른 클래스 이름이나 생성자 또는 인터페이스를 기재해서 다른 클래스를 상속 받거나 인터페이스를 구현한 anonymous class 를 만드는 것도 가능 이 문법도 많이 사용 된다. 어떤 클래스나 인터페이스를 상속 받아.. 코틀린 : Sealed Class Sealed 라는 예약어와 함께 만드는 클래스 => 열거형 상수 처럼 입력 되는 데이터를 제한 하기 위한 목적으로 사용 열거형 상수는 각 이름에 값을 대입하지만 sealed class 는 자신의 하위 클래스를 설정 인스턴스 생성을 못함, 생성자가 private 이라서 외부에서 생성자를 호출할 수 없기 때문에 인스턴스 생성을 못함 변수를 선언하면 하위 클래스의 인스턴스만 대입 할 수 있다. sealed class Drawing() { class 이름 (매개 변수 나열 ) : Drawing() class 이름2 (매개 변수 나열 ) : Drawing() } val drawing: Drawing= Drawing의 하위 클래스인 이름1 이나, 이름2 인스턴스만 가능 Drawing 인스턴스를 생성할 수 없기 때문.. 코틀린 : inner class - Nested Class => 다른 클래스 안에 포함된 클래스 => 외부 클래스 이름. 내부 클래스 이름으로 사용 => 기본적으로 내부 클래스에서는 외부클래스의 멤버에 접근할 수 없음 => 내부 클래스를 만들 때 inner를 추가하면 외부 클래스의 멤버에 접근 가능 inner 가 추가 되면 내부 클래스의 인스턴스는 클래스 안에서만 생성 => inner 가 붙지 않은 내부클래스는 static 의 개념이라 외부클래스이름.내부클래스 이름으로 인스턴스를 생성 할 수 있지만 inner가 붙으면 static의 개념이 소멸 되기 때문에 내부클래스의 인스턴스 메소드 안에서만 인스턴스 생성을 해야합니다. => 안드로이드는 클래스 안에 클래스를 만드는 구조를 많이 사용 이벤트 처리할 때 많이 사용 // 외부 클래스 class Button{ val.. 코틀린 : 생성과 사용 멤버 등의 개념 1) 생성 enum class 열거형 상수 이름 { 열거형 상수 나열 } 2) 사용 열거형 상수 이름.열거형 상수 3) 멤버 name 속성은 나열된 상수 이름을 리턴 ordinal 속성을 호출하면 정수 값을 리턴 상수 이름을 나열 할 때 생성자를 이용해서 데이터를 설정하는 것이 가능 4) 옵션이 정수로 만들어진 경우 파악해야하는 부분 => 숫자의 패턴이 1, 2, 3 처럼 연속성을 갖는지 아니면 1, 2, 3, 4, 8 처럼 2의 지수승인지 파악 연속성을 갖는 숫자 패턴이면 하나만 선택해서 설정 2의 지수승이면 조합 가능 > 하나의 비트만 1인 경우 조합을 할 때는 2개의 옵션을 +로 결합해도 되고 |로 해도 됩니다. A: 65 B: 66 C: 67 마우스 왼쪽 : 1 마우스 오른쪽: 2 shift : .. 이전 1 2 3 4 5 6 7 8 다음