[Kotlin] Scope 함수
2022. 2. 21. 12:49
Language/Kotlin
1. Scope 함수 1-1) 람다식 문법 지원. 중괄호를 사용함. instance(객체)를 함수의 parameter로 전달하여 사용하는 특징. instance를 사용하지 않고 직접 property, method를 호출 가능하게 한다. run, with, apply, also, let 1-2) 작업이 끝나면 instance를 반환: apply, also 작업이 끝나면 최종 값을 반환: run, let, with 1-3) this로 사용되는 scope 함수: run, apply, with 1-4) it으로 사용되는 scope 함수: let, also 1-5) 호출 대상인 this 자체를 반환하는 Scope 함수: apply, also 1-6) 마지막 실행 code(최종 값)를 반환하는 scope 함수: l..
[Kotlin] Lateinit, Lazy
2022. 2. 18. 14:40
Language/Kotlin
1. Lateinit 1) 사용하면, safe call을 쓰지 않을 수 있고 var로 선언된 Class의 Property에만 사용이 가능하다. null을 불허한다. class SampleA { lateinit var name: String init { name = "Lionel" } fun process() { name?.plus("messi") print("이름의 길이 = ${name?.length}") print("이름의 첫 글자 = ${name?.substring(0, 1)}") } } 2) 변수 초기화 여부 확인 문법 변수가 초기화 작업이 안 되어 있으면 변수를 썼을 때 문제가 되는데... 변수가 초기화가 됐는지 안 됐는지 확인하는 문법 text 변수 초기화 여부를 체크하는 속성. 되어 있으면 그..
[Kotlin] Generic, Null
2022. 2. 18. 12:14
Language/Kotlin
1. Generic 1) Java로 비유하면 전통적인 collection Object / Object o = 10 Collection에 Generic 도입. List list; /* public interface MutableList { var list: Array ... } */ fun main(){ testGenerics() } fun testGenerics(){ var list: MutableList = mutableListOf() list.add("월") list.add("화") list.add("수") // list.add(5) 오류 발생 for (item in list){ println("${item}") } } list라는 변수를 MutableList type으로 지정. mutableList..
[Kotlin] 추상 Class
2022. 2. 17. 15:42
Language/Kotlin
1. Abstract Class 추상 Class를 구현(상속)하는 Class abstract class Design{ abstract fun drawText() abstract fun draw() fun showWindow(){ } } class Implements : Design{ override fun drawText() { TODO("Not yet implemented") } override fun draw() { TODO("Not yet implemented") } } 2. Interface 1) interface 구문. 모든 요소가 abstract 생략됨. 2) interface 상속 시 () 사용 안 함. 3) 속성도 overriding 한다. interface IAnimal{ fun say(..
[Kotlin] 상속과 확장
2022. 2. 17. 13:08
Language/Kotlin
1. 상속과 확장 Activity Class: 글 쓰기, 그림 그리기, 화면에 새 창 보여 주기 미리 정의가 되어 있음. 1) Class 상속 open class 부모클래스명 { } class 자식클래스명 : 부모클래스명(){ } 기본 생성자 호출 기능도 바로 받음 2) Parameter가 있는 생성자 Class 상속 자식 Class도 부모 Class의 Parameter 개수와 Class를 동일하게 가져야 함. open class 부모클래스(value: String){ } class 자식클래스(value: String) : 부모클래스(){ } 3) 부모 Class의 Property와 사용하기 open class Parent{ var hello: String = "hi" fun sayHello(){ pri..
[Kotlin] 함수
2022. 2. 17. 10:01
Language/Kotlin
1. 함수 사용 fun 함수명(파라미터: 타입):반환타입{ return 값 } ex) var x: Int = 10 fun square(x: Int): Int{ return x*x } fun main(){ var x: Int = 10 var squareResult = square(10) println("${x}의 제곱근은? ${squareResult}") printSum(10, 20) val PI = getPi() println("파이의 값은? ${PI}") } // 파라미터 사용, 반환 값 fun square(x: Int): Int{ return x * x } // 파라미터 사용. 반환 값 없음 fun printSum(x: Int, y: Int){ println(" x + y = ${x + y}") } ..
[Kotlin] collection(list, map, set)
2022. 2. 17. 09:49
Language/Kotlin
1. set 1) collection class를 상속 받는 class. 집합. data를 추가하면서 동적으로 크기를 확장 List와 달리 순서가 없으며 중복을 허용하지 않음. index를 사용해 내부 data를 참조할 수 없고, data가 존재하는지 확인하는 용도로 사용. students.set(5, 60) students.set(6, 60) students.set(7, 60) students.set(8, 60) students.set(9, 60) 2) 값 변경하기 인덱스로 변경할 수도 있고 .set이라는 함수로 변경할 수도 있다. students[4] = 88 students.set(7, 98) println(students[7]) 3) data 출력하기 println("전체 데이터 수: ${set}..
[Kotlin] 배열
2022. 2. 16. 12:48
Language/Kotlin
1. 배열 동일한 datatype으로 크기를 정해 하나의 대표 이름으로 memory를 관리. 1) var 변수 = Array(size) size는 배열 안에 있는 값의 개수 정도로 해석 var students = IntArray(10) var longArray = LongArray(10) var charArray = CharArray(10) var floatArray = FloatArray(10) var doubleArray = DoubleArray(10) 2) 값 할당(대입) 배열이름[인덱스] = 값 index란 배열의 순번 정도로 해석. size를 10으로 설정했기 때문에 students[10] = 90은 예외 발생. students[0] = 90 students[1] = 90 students[2] ..