본문 바로가기

Do it 코틀린 프로그래밍19

코틀린 표준함수 (1) 코틀린의 표준함수를 이용하면 코드를 더 단수화하고 읽기 좋게 만들어 줍니다. 표준함수는람다식과 고차함수를 이용해 선언되어 있습니다. 람다식과 고차 함수 복습하기 람다식 val 변수 이름: 자료형 = { 매개 변수[,,] -> 람다식 본문 } val sum :(Int, Int) -> Int = { x, y -> x + y} println(sum(1,2)) // 3 val mul: (Int, Int) -> Int = {x, y -> x * y } println(mul(2,2)) // 4 // 매개 변수 1개 일 경우, it으로 표기할 수 있음. val add:(Int) -> Int = {it +1} println(add(1)) // 2 추론된 반환 자료형이 Unit이 아닌 경우에는 본문의 마지막 표현식이 반.. 2020. 9. 6.
코틀린 시퀀스 코틀린의 시퀀스(Swquence)는 순차적인 컬렉션으로 요소의 크기를 특정하지 않고, 나중에 결정할 수 있는 특수한 컬렉션입니다. 시퀀스는 처리 중에는 계산하고 있지 않다가 toList()나 count() 같은 최종 연상에 의해 결정됩니다. 요소 값 생성하기 generateSequence()로 생성하기 fun main(){ // 시드 값 1을 시작으로 1씩 증가하는 시퀀스 정의generateSequence(Seed:) val nums: Sequence = generateSequence(1) { it + 1 } //take() 사용해 원하는 요소 개수 만큼 획득하고 toList()를 사용해 List 컬렉션으로 반환 println(nums.take(10).toList())//[1, 2, 3, 4, 5, 6,.. 2020. 9. 5.
코틀린 컬렉션(3) - Set과 Map 활용하기 Set는 정해진 순서가 없는 요소들의 집합을 나타내는 컬렉션입니다. 동일한 요소를 중복해서 가질 수 없습니다. Map은 요소가 키와 값의 쌍의 형태로 저장됩니다. 키는 중복될 수 없고 유일합니다. 하지만 값은 중복해서 사용할 수 있습니다. Set 생성하기 불변형 setOf() 함수 val mixedTypesSet = setOf("Hello", 5, "World", 3.14, 'c') val intSet: Set = setOf(1,5,5) println(mixedTypesSet) // [Hello, 5, World, 3.14, c] println(intSet) // [1, 5] 가변형 mutableSetOf() 함수 val animals = mutableSetOf("Lion","Dog","Cat","Pyt.. 2020. 8. 25.
코틀린 컬렉션(2) - List 활용하기 List는 순서에 따라 정렬된 요소를 가지는 컬렉션으로, 가장 많이 사용하는 컬렉션 중에 하나입니다. 불변형 List 생성하기 listOf() 함수 var numbers: List = listOf(1,2,3,4,5) var names: List = listOf("one","two","three") var mixedTypes = listOf("Hello", 1, 2.45, 's') // 타입 for (number in numbers) print(number) // 12345 println() for (index in names.indices) print("names[$index] = ${names[index]}") // names[0] = onenames[1] = twonames[2] = three for.. 2020. 8. 24.
코틀린 컬렉션(1) - 기본 구조 코틀린의 컬렉션은 자바 컬렉션의 구조를 확장 구현한 것입니다. 컬렉션의 종류는 List, Set, Map 등이 있으며 자바와는 다르게 불변형(immutable)과 가변형(mutable)으로 나눕니다. 가변형 컬렉션 - 객체에 데이터를 추가하거나 변경할 수 있음 불변형 컬렉션 - 데이터를 한 번 할당하면 읽기 전용이 됨 컬렉션 불변형(읽기 전용) 가변형 List listOf mutableListOf, arrayListOf Set setOf mutableSetOf, hashSetOf, linkedSetOf, sortedSetOf Map mapOf mutableMapOf, hashMapOf, linkedMapOf, sortedMapOf Collection 인터페이스의 멤버 멤버 설명 size 컬렉션의 크기를 .. 2020. 8. 23.
코틀린 문자열 문자열은 연속된 문자의 배열과 같습니다. 불변의 값으로 생성되기 때문에 참조되고 있는 메모리가 변경될 수 없습니다. 새로운 값을 할당하려고 한다면 기존 메모리 이외에 새로운 문자열을 위한 메모리를 할당해야 합니다. var s ="abcdef" s="xyz" // 새로운 메모리 공간이 생성 문자열 추출하고 병합하기 문자열 추출 : String.substring(인덱스 범위), CharSequence.subSequence(인덱스 범위) var s ="abcdef" s=s.substring(0..1)+"x"+s.substring(3..s.length-1) // ab 추출하고 x를 덧붙이고 다시 def 추출 // s="abxdef" 문자열 비교하기 String.compareTo(String) var s1="He.. 2020. 8. 22.
코틀린 배열 코틀린에서 배열은 Array 클래스로 표현됩니다, 그 외에 여어 가지 묶음 데이터를 표현하는 컬렉션이 있습니다. 기본적인 배열 생성 val numbers = arrayOf(4,5,6,7) // 정수형으로 초기화된 배열 val animals = arrayOf("Cat", "Dog", "Lion") // 문자열형으로 초기화된 배열 다차원 배열 val array1 = arrayOf(1,2,3) val array2 = arrayOf(4,5,6) val array3 = arrayOf(7,8,9) val arr2d = arrayOf(array1, array2, array3) arr2d 배열 size = 3 x 3 1 2 3 4 5 6 7 8 9 val arr2d = arrayOf(arrayOf(1,2,3), arr.. 2020. 8. 21.
코틀린 제네릭 제네릭은 클래스 내부에서 사용할 자료형을 나중에 인스턴스를 생성할 때 확정합니다. 제네릭을 사용하면 객체의 자료형을 컴파일할 때 체크하기 때문에 객체 자료형의 안전성을 높이고 형 변환의 번거로움이 줄어듭니다. 예) class Box(t:T){ // 형식 매개변수로 받은 인자를 name에 저장 var name=t } fun main(){ val box1: Box = Box(1) val box2: Box = Box("Hello") println(box1.name) // 1 println(box2.name) // Hello } 제네릭에서 사용하는 형식 매개변수 이름 형식 매개변수 이름 의미 E 요소(Element) K 키(Key) N 숫자(Number) T 형식(Type) V 값(Value) S, U, V e.. 2020. 8. 20.
코틀린 상속과 다형성 상속 : 상위 클래스의 속성과 기능을 물려받아 계승하는 것 다형성 : 메서드가 같은 이름을 사용하지만 구현 내용이 다르거나 매개변수가 달라서 하나의 이르믕로 다양한 기능을 수수행하는 개념 코틀린은 클래스를 상속해 주려면 open 이라는 키워드와 함께 클래스를 선언해야 합니다. 하위 클래스 선언하기 open class 기반 클래스 이름 {//묵시적으로 Any로부터 상속됨, oepn으로 파생 가능 } class 파생 클래스 이름() : 기반 클래스 이름{//기반 클래스로부터 상속됨, 최종 클래스로 파생 불가 } 상속 및 하위 클래스 선언 예) // 상속 가능한 클래스를 선언하기 위해 open 사용 open class Bird(var name:String, var wing:Int, var beak:String.. 2020. 8. 19.