Skip to content

Instantly share code, notes, and snippets.

.map {
with(createRequest(Type.NEXT, it, data)) {
val keywords = // ...
copy(keywords = keywords)
}
}
// <https://github.com/tailwhiper/kotlin-enum-extensions>
inline fun <reified E : Enum<E>> valueOf(name: String, default: E) =
enumValues<E>().find { it.name == name } ?: default
inline fun <reified E : Enum<E>> valueOf(ordinal: Int, default: E) =
enumValues<E>().find { it.ordinal == ordinal } ?: default
inline fun <reified E : Enum<E>> valueOfWithCondition(condition: (E) -> Boolean) =
enumValues<E>().find(condition)
fun returnsUnit() {
methodReturningBoolean()
}
fun returnsAnImplicitBoolean() = methodReturningBoolean()
private fun methodReturningBoolean() = true
class Repository {
init{
}
companion object {
private val CACHE = TimeUnit.HOURS.toSeconds(4)
}
}
fun alwaysReturnsNull(position: Int): String? {
if ((position % 10) == 0) {
when (position) {
10 -> "one"
20, 30 -> "two"
else -> "three"
}
}
return null
}
const val ID = "id"
class MyActivity : Activity() {
private val id1 by extra<String>(ID) // String?
private val id2 by extraNotNull<String>(ID) // String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireNotNull(id1, id2)
inline fun <reified T: Any> Fragment.extra(key: String, default: T? = null) = lazy {
val value = arguments?.get(key)
if (value is T) value else default
}
inline fun <reified T: Any> Fragment.extraNotNull(key: String, default: T? = null) = lazy {
val value = arguments?.get(key)
requireNotNull(if (value is T) value else default) { key }
}
inline fun <reified T: Any> Activity.extra(key: String, default: T? = null) = lazy {
val value = intent?.extras?.get(key)
if (value is T) value else default
}
inline fun <reified T: Any> Activity.extraNotNull(key: String, default: T? = null) = lazy {
val value = intent?.extras?.get(key)
requireNotNull(if (value is T) value else default) { key }
}
fun requireNotNulls(vararg any: Any?) {
any.forEach {
requireNotNull(value = it)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
requireNotNulls(id1, id2)
}
object DataManager {
@WorkerThread
fun dummy(context: Context) {
with(MyDatabase.get(context)) {
users().insert(User(login = "user.name"))
projects().insert(Project(name = "project.name"))
notifications().insert(Notification(msg = "created"))
}
}