728x90

Kotlin 15

(코틀린) 매개변수가 1개인 람다 함수

fun main() { val some = {no: Int -> println(no)} some(10) } 일반적으로 매개변수가 1개인 람다 함수는 위와 같이 작성한다. Int 타입의 매개변수가 1개인 람다 함수를 선언하고 이를 호출한 코드이다. fun main() { val some: (Int) -> Unit = {println(it)} some(10) } 위 코드를 보면 람다 함수의 중괄호가 안에 화살표가 없으므로 매개변수가 없는 것처럼 보입니다. 하지만 람다 함수 앞에 (Int) -> Unit이 매개변수가 1개인 람다 함수임을 알려 줍니다. 이처럼 람다 함수의 매개변수가 1개일 때는 중괄호 안에서 매개변수 선언을 생략하고 println(it)처럼 it 키워드로 매개변수를 이용할 수 있습니다. 출처 ..

코틀린 컬렉션 타입의 데이터 개수만큼 반복문

fun main() { var data = arrayOf(10, 20, 30) for (i in data.indices){ print(data[i]) if (i !== data.size -1) print(",") } } 위 소스는 배열의 크기만큼 for 문을 반복하게 작성한 소스 indices는 컬렉션 타입의 인덱스 값을 의미하므로 for 문을 반복하면서 0,1,2 값을 i에 대입한다. fun main() { var data = arrayOf(10, 20, 30) for ((index, value) in data.withIndex()){ print(value) if (index !== data.size -1) print(",") } } 위의 소스는 for 문을 반복하면서 인덱스와 실제 데이터를 함께 가져..

코틀린 for~in 반복문

fun main() { var sum: Int = 0 for ( i in 1..10){ sum += i } println(sum) } 위 소스는 for 문을 이용해 1부터 10까지 더하기를 수행한다. i in 1..10 코드는 1부터 10까지 1씩 증가하면서 for 문의 실행 영역을 반복하라는 의미이다. 따라서 총 10번 반복해서 실행한다. for 문의 조건은 이와 같이 단순히 1씩 증가 또는 감소하게 만들 수도 있고 2씩 증가하게 만드는 등 다양하게 작성 가능하다. for (i in 1..10){...} -> 1부터 10까지 1씩 증가 for (i in 1 until 10) {...} -> 1부터 9까지 1씩 증가(10은 미포함) for (i in 2 ..10 step 2) {...} -> 2부터 10..

kotlin에서 리스트와 맵 예제

코틀린에서는 가변과 불편이라는 2가지 타입의 클래스를 제공한다. List는 불변 타입이므로 size(), get() 함수만 제공하고 데이터를 추가하거나 변경하는 add(), set() 함수는 제공하지 않는다. 그런데, MutableList는 가변타입이므로 size(), get() 함수 이외에 add(), set() 함수를 이용할 수 있다. MutableList는 mutableListOf() 함수로 만들 수 있다. fun main() { var mutableList = mutableListOf(10,20,30) mutableList.add(3,40) mutableList.add(0,50) println( """ list size : ${mutableList.size} list data : ${mutable..

(Kotlin)스톱워치 기능 구현

private fun start(){ btn_start.text = "일시정지" btn_start.setBackgroundColor(getColor(R.color.red)) isRunning = true //스톱워치를 시작하는 로직 timer = timer(period = 10) { time++ val milli_second = time % 100 val second = (time % 6000) / 100 val minute = time / 6000 // 밀리초 tv_millisecond.text = if (milli_second < 10) ".0${milli_second}" else ".${milli_second}" // 초 tv_second.text = if (second < 10) ":0${seco..

728x90