Skip to content

Instantly share code, notes, and snippets.

@vodamiro
vodamiro / DefaultValues2.kt
Created April 11, 2019 13:59
S_A_DefaultValues2.kt
interface Greeter {
fun greet() { println("Hi!") }
}
@vodamiro
vodamiro / DefaultValues.kt
Created April 11, 2019 13:59
S_A_DefaultValues.kt
fun logException(e: Throwable, level = Log.ERROR) {
// implementation
}
// Then you can call the method without providing the second parameter
logException(IllegalStateException("Test exception"))
logException(IllegalStateException("Test exception"), Log.WARN)
@vodamiro
vodamiro / SingleExpression3.kt
Created April 11, 2019 13:58
S_A_SingleExpression3.kt
fun parseColor(color: String) = when (color.toLowerCase()) {
"red" -> "#f00"
"green" -> "#0f0"
"blue" -> "#00f"
else -> "#fff"
}
@vodamiro
vodamiro / SingleExpression2.kt
Created April 11, 2019 13:57
S_A_SingleExpression2.kt
fun answerToEverything(): Int {
return 42
}
@vodamiro
vodamiro / SingleExpression.kt
Created April 11, 2019 13:57
S_A_SingleExpression.kt
fun answerToEverything() = 42
@vodamiro
vodamiro / Extensions.kt
Created April 11, 2019 13:56
S_A_Extensions.kt
fun View.makeInvisible() {
this.visibility = View.INVISIBLE
}
val button: Button = //...
button.makeInvisible()
@vodamiro
vodamiro / SealedClasses2.kt
Created April 11, 2019 13:55
S_A_SealedClasses2.kt
fun handleStateChange(newState: UIState) {
when (newState) {
is LoadingState -> println("Loading ...")
is DataState -> println("Got data: ${newState.data}")
is ErrorState -> println("Error: ${newState.error.message}")
}
}
@vodamiro
vodamiro / SealedClasses.kt
Created April 11, 2019 13:54
S_A_SealedClasses.kt
sealed class UIState
object LoadingState : UIState() // Data is being loaded
class DataState(val data: Data) : UIState() // Data loaded successfully
class ErrorState(val error: Throwable) : UIState() // In case of failure
@vodamiro
vodamiro / DataClasses.kt
Created April 11, 2019 13:53
S_A_DataClasses.kt
// Example of data class (saved more than 10 lines in comparison to Java)
data class User(val name: String, val surname: String, val age: Int)
// Example of custom getters and setters on a property
class MrUser {
var name: String = ""
get() {
return "Mr. $field" // Get name with "Mr." prefix
}
set(newValue) {
@vodamiro
vodamiro / Constructors.kt
Last active April 11, 2019 13:39
Bye Java, hello Kotlin alias What do we love about Kotlin @Synetech
class InitOrderDemo(name: String) {
val firstProperty = "First property: $name".also(::println)
init {
println("First initializer block that prints ${name}")
}
val secondProperty = "Second property: ${name.length}".also(::println)
init {