목록Computer/Kotlin (43)
안드로이드 개발자의 창고
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 확장 함수 기존 클래스에 새로운 함수를 추가하는 개념이다. 추가된 메서드는 같은 프로그램 내에서만 사용이 가능하다. 자바 코드로 변경될 때 객체의 ID를 받아 사용하는 코드로 변경된다. 확장함수 정의 : 클래스명.추가할 메서드 이름 📖 예제 코드 fun main() { val str1 = "abcd" println(str1.getUpperString()) println(str1.printString()) } fun String.getUpperString() : String { return this.uppercase(Locale.getDefault()) } fun String.printString() { println("문자열 : $this")..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 익명 함수 함수의 이름이 없는 함수이다. 함수를 변수에 담아 관리할 때 사용한다. 고차함수와 관련이 깊다. 📖 예제 코드 fun main() { testFunction1() val testFunction2 = testFunction1
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmweYf/btsg85Y2fcM/yUY43wzHqWNRv5tMklkG20/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 인라인 함수 Java 코드로 변경될 때 자바 코드로 변경될 때 inline 함수를 호출하는 부분들은 함수 내부의 코드로 변경된다. 함수 호출 방식은 전체 코드양이 줄어들어 메모리를 적게 쓴다는 장점이 있지만 호출 시 코드 흐름이 이동하고 다시 돌아와야 하기 때문에 작업량이 늘어난다. 인라인 함수는 코드가 다소 늘어나지만 함수 호출과 관련된 작업을 하지 않는 장점이 있다. 딱 힌번만 사용하는 함수가 있을 때 사용하는 경우가 종종 있다. 📖 예제 코드 fun main() { testFunction1() testFunction1() testFunction2() testFunction2() } fun testFunction1(){ println("-..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 함수형 프로그래밍 Kotlin은 함수 사용을 보다 편리하게 할 수 있도록 다양한 개념들이 제공된다. 매개 변수로 받은 값을 연산하여 반환하는 함수를 만들 때 한 줄로 생략해서 만들 수 있다. 만약 수식을 계산하는 함수의 코드를 특정 부분에서만 사용한다면 람다로 만들어 사용할 수 있다. 📖 예제 코드 매개변수로 들어오는 값을 계산하여 반환하는 함수 fun testFun1(a1:Int, a2:Int) : Int{ return a1 + a2 } fun testFun2(a1:Int, a2:Int) :Int = a1 + a2 fun testFun3(a1:Int, a2:Int) = a1 + a2 ✔️ 코드 해석 testFun2와 testFun3은 tes..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 연산자 오버로딩 Kotlin은 모든 값을 객체로 만들어 객체로 관리하기 때문에 코드에 정수를 작성하면 정수로 관리하는 것이 아닌 정수 값을 관리하는 객체를 생성하여 객체로 관리하게 된다. 따라서 더하기 연산 자체가 일반적인 연산 방식으로 동작하지 못한다. Kotlin에서는 객체와 객체를 연산자를 통해 연산을 하게 되면 연산을 수행하는 것이 아닌 객체 내의 메서드를 호출한다. 호출된 메서드의 객체를 반환 받아 이를 연산의 결과로 사용하게 된다. 📖 예제 코드 class TestClass(var a1:Int, var a2:Int){ operator fun plus(target:TestClass):TestClass{ var r1 = this.a1 ..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 범위 지정 함수 객체를 생성할 때 파라미터에 값을 설정하는 것과 관련이 있다. let, apply, run, with, also 등이 있다. 📖 예제 코드 객체를 생성할 TestClass1 class TestClass1(var a1:Int, var a2:Int){ var a3:Int = 0 var a4:Int = 0 fun testMethod1(){ println("a1 : $a1") println("a2 : $a2") println("a3 : $a3") println("a4 : $a4") } } let 객체에 접근할 때 it 변수를 사용해야 한다. 코드 블럭 마지막에 작성된 값이나 수식을 반환해준다. let 객체 생성 후 나중에 프로퍼티에 ..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 고차 함수 함수를 매개변수로 받거나 반환 타입이 함수인 함수를 고차 함수라고 부른다. 함수 호출 시 전달하는 함수와 반환 하는 함수는 람다식을 사용할 수도 있다. 📖 예제 코드 ✔️ 매개변수로 함수를 받는 함수 fun testFunc1(a1:Int, a2:Int, m1:(Int, Int) -> Int){ val r1 = m1(a1, a2) println("testFun1 r1 : $r1") } fun main(){ val t1 = fun(x1:Int, x2:Int) : Int{ return x1 + x2 } testFunc1(100, 200, t1) testFunc1(100, 200, fun(x1:Int, x2:Int) : Int { retu..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wz5le/btsgE6b9z5I/xHulUKnh6gso6hcFi86q2K/img.png)
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Sealed Class란? 열거형은 특정 값을 의미하는 상수들을 모아 관리하는 개념이라면 Sealed Class를 객체를 모아 관리하는 개념이다. 열거형의 경우 상수에 지정된 값은 절대로 변경이 불가능 하지만 Sealed Class를 객체를 관리하는 개념이므로 객체가 가지고 있는 변수에 값을 설정하여 지정된 값을 변경하는 것이 가능하다. 열거형 사용 시 상수가 의미하는 값을 수시로 변경하거나 다양한 형태로 사용하고자 할 때 사용한다. 📖 예제 코드 fun main() { val s1 = Number1.OneClass(100, 200) val s2 = Number1.TwoClass(300) val s3 = Number1.ThreeClass(10..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 열거형 클래스 프로그램 개발 시 특정 그룹안의 구성 요소를 정의하는 값이 필요하고자 할 때 사용한다. 열거형은 정의한 단어 자체가 프로그램에서 사용하는 값이 된다. 월을 나타내는 단어들, 혈액형을 나타내는 단어들, 방향, 성별 등등 📖 예제 코드 기본 Enum Class fun main() { printDirection(Direction.NORTH) // 북쪽입니다 printDirection(Direction.WEST) // 서쪽입니다 } // 열거형 정의 enum class Direction{ NORTH, SOUTH, WEST, EAST } fun printDirection(a1:Direction){ when(a1) { Direction.N..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Null 타입의 형변환 null 값이 담긴 객체에 대해 보다 안전한 형 변환 방법을 제공하고 있다. null 을 허용하는 변수가 null 값이 들어있지 않다는 것을 보장해 주면 null 을 허용하지 않는 타입으로 스마트 캐스팅이 발생한다. if문 사용 if 문을 통해 null 허용 변수에 null 값이 아닌 객체의 주소 값이 들어 있음을 검사해 주면 if 문 내부에서는 null을 허용하지 않는 변수로 변환되어 사용할 수 있다. if 문이 종료되면 다시 null 허용 변수가 된다. 이 때 비교 연산자 보다는 is 연산자를 추천한다. 비교 연산자로 검사할 경우 타입이 Any 인 경우 컴파일 오류가 발생한다. 📖 예제 코드 fun main() { ..