Несколько примеров на Kotlin

Теги: Android, Kotlin, Примеры

Просто чтобы не забыть. Первый пример показывает работу с регулярными выражениями, второй - с null и получением элементов массива через лямбда-выражение.

fun main(args: Array<String>) {
    
    //regex
    val month = "(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC)"
	fun getPattern(): String = """\d{2}\h$month\h\d{4}"""
    val regex = Regex(getPattern())
    val str ="12 DEC 1996"
    val flag = regex.containsMatchIn(str)
    if (flag)
    	println("{$str} is true!")
    else
    	println("{$str} is wrong!")
    
    //null
    val listWithNulls: List<String?> = listOf("A", null, "B", "ERROR 404", null)
	for (item in listWithNulls) {
     	item?.let  {println(it)}  ?: println("element is empty") 
	}
}

Работа с object expressions (аналог анонимных внутренних классов в Java, позволяет переопределять классы, расширять функциональность, реализовывать интерфейсы). Так же в примере показывается переопределение интерфейса Comparator, для реализации сортировки массива целых чисел в обратном порядке.

import java.util.*

fun getList(): List<Int> {
    val arrayList = arrayListOf(1, 5, 2)
    Collections.sort(arrayList, object : Comparator<Int> {
        override fun compare(a: Int, b: Int) = b - a
    })
    return arrayList
}

Предыдущий пример, но с использование лямбда-выражения

import java.util.*

fun getList(): List<Int> {
    val arrayList = arrayListOf(1, 5, 2)
    Collections.sort(arrayList, { x, y -> y - x })
    return arrayList
}

Наконец, тот же пример но с использованием библиотечной функции из Kotlin

fun getList(): List<Int> {
    return arrayListOf(1, 5, 2).sortedDescending()
}




Кстати, вот схемка как “подправлены” коллекции в Kotlin. Подробнее read-only and mutable views on Java collections

03 06 2017

Теги заметки: