본문 바로가기

Kotlin

(17)
[Kotlin] 4.람다 In Collection # 람다 활용법 In Collection Collection 사용 시 람다를 유용하게 쓸 수 있는 경우가 많다 Collection - filter 함수 단어그대로 리스트 원소 중 원하는 원소만 filtering 하겠다는 뜻 리스트의 각 원소를 람다에 넘겨서 람다의 return 값이 true인 원소로 이루어진 리스트를 새로 반환한다 고로, 람다의 마지막 줄은 TRUE/FALSE를 리턴해야 한다 //filter 예제 (1) val listInt = listOf(1, 2, 3, 4) listInt.filter { it % 2 == 0 } // [2,4] //filter 예제 (2) val listStudents = listOf(Student("Tina", 4), Student("Scott", 1)) listS..
[Kotlin] 4.람다 - 기본 # 람다 람다? -> 함수에 인자로 전달 할 수 있는 코드 모음 JAVA 8 에서 사용할 수 있게된, 그 람다식... Kotlin에서도 사용할 수가 있다 람다는 메소드가 하나인 무명 객체를 대신 할 수 있다 람다 식 예시 in Kotlin val lambda = { a : Int, b : Int -> a+b } 1) 중괄호로 표현 2) 파라미터 a, b와 실제 본문인 'a +b' 사이는 화살표로( ->) 구분한다 람다 식 변수 대입 예시 val sumLamda = { a : Int, b : Int -> a+b } //람다를 변수에 대입 println(sumLamda(10,20)) //변수에 저장된 람다 호출 방법 -> 30 람다의 다양한 표현 방식 Collection.kt의 'maxByOrNull' 함수..
[Kotlin] 3. Object # Object 3가지 쓰임새에 대해 알아보자 singleton companion object anonymous object(무명객체) # 1) Object 키워드 - 단일 인스턴스 - singleton object 키워드로 obect declaration(객체 선언, object 선언)을 통해 싱글턴을 간단히 사용할 수 있다 클래스 선언 + 클래스 인스턴스 생성(단일) 을 한번에 해결해 준다 클래스 안에 객체 선언도 가능 -> 그래도 단일 인스턴스 인터페이스,클래스 상속도 가능 thread-safe + 번외 팁 : 인터페이스 구현이나, 클래스 상속 모두 ':'으로 표현하기에 구분이 헷갈릴 수 있지만..! 명칭 뒤에 '()' 가 붙으면 클래스고 없으면 인터페이스다. 아래 예제에서 Comparotor는 인..
[Kotlin] 3. Data Class, by #데이터 클래스 (Data Class) 데이터를 저장하는 클래스를 사용할 때 유용한 클래스이다 'data class 클래스명 constructor(val name: String, val grade: Int)' 형태로 사용한다 [Kotlin Data Class의 기능] 코틀린의 Data Class는 toString(), equals(), hashCode() 를 컴파일러가 자동 생성 해준다 toString() 오버라이드 : 클래스의 데이터 값을 문자열로 편하게 보고자 equals() 오버라이드 : 동등 비교를 하고 싶을 경우 hashCode() 오버라이드 : equals()오버라이드 하면 hashCode도 오버라이드 해야 함 Java나, 코틀린 일반 클래스를 사용한다면, 위의 3가지 함수를 일일이 오버라이딩..
[Kotlin] 3.Interface, Class, 변경자, 초기화블록, 추상 프로퍼티 #Interface 추상 메소드 뿐만아니라 구현체 있는 메소드도 정의할 수 있다. (like 'default method' in JAVA 8) 상태 저장은 불가하다 //JAVA에서의 default method 예시 interface InterfaceTest { default void print() { System.out.println("This is Default Method"); } } 코틀린 Interface 사용법 override 변경자 꼭 붙여야 함 구현 메소드의 경우 오버라이드 안하고 그냥사용 할 수 있다(원한다면 override도 가능) interface Human { fun sleep() //일반 추상 메소드 -> 당연히 오버라이드 해야 함 fun speak() = println("I'm H..
[Kotlin] 2. 코틀린 기본 - 함수(2) #가변 인자 함수 인자의 개수가 달라질 수 있는 함수 컴파일러가 가변 인자들을 배열로 만들어 줌 vararg 변경자를 이용 이미 만들어져 있는 배열을 가변 인자로 사용 가능 = *(스프레드 연산자)를 사용 class Student(var name: String, var age: Int) { //가변 인자 함수 fun printFriend(vararg friends :String) { println("Tina's Friends = ${friends.asList()}") //전달받은 배열 friends를 print } } fun print() { val student = Student("Tina", 19); //1) 가변 인자 함수 호출 student.printFriend("Scott", "Dean", "B..
[Kotlin] 2. 코틀린 기본 - 함수(최상위/확장) #함수 호출 (인자에 이름 붙여 함수 호출) 함수 호출 시 인자에 이름을 붙여서 호출 할 수 있다 java에 정의된 함수일 경우 인자에 이름 붙여 호출은 불가(코틀린은 JDK 6과 호환되는데, 클래스 파일에 함수 파람 정보를 넣는것은 JAVA 8 이후 추가됨) 장점 : 함수 호출 코드를 명확하게 표시 할 수 있다 -> 가독성 UP fun paramNameTest(str1: String, str2: String, str3: String) {...} paramNameTest("11", "22", "33") //일반적 함수 호출 paramNameTest(str1 = "11", str2 = "22", str3 = "33") //인자에 이름 붙여 호출 #함수 호출 (디폴트 파람 값 추가) 함수 정의 시 파라미터에..
[Kotlin] 2. 코틀린 기본 - 맛보기 #What kotlin을 사용하기 위한 최소한의 코드 작성법을 알아보자 #변수 변수 선언 키워드 val vs var val = value = 변경 불가 = immutable =한 번 값이 셋팅 되면 변경 할 수 없는 final 변수 var = variable = 변경 가능 = mutable 타입 생략 가능/코틀린 컴파일러가 타입 추론 해 줌 val testStr : String (가능) val testStr = "" (가능) val test (불가능 -> 타입을 생략할 경우 초기화 필수!! 왜?? 컴파일러가 타입 추론할 건덕지가 없기 때문) #함수 fun 함수명(param1 : String, param2 :String) : 리턴타입{ return ~ } fun getLongerString(str1 : S..