trevjones
09/08/2017, 4:32 PMobject: WhateverInterfaceOrClass()
either way it ends up as a template for the compiler no?karelpeeters
09/08/2017, 4:36 PMtrevjones
09/08/2017, 4:40 PMinline fun TabLayout.onTabReselected(crossinline onTabReselected: (tab: TabLayout.Tab) -> Unit) {
addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
override fun onTabReselected(tab: TabLayout.Tab) = onTabReselected(tab)
override fun onTabUnselected(tab: TabLayout.Tab?) {}
override fun onTabSelected(tab: TabLayout.Tab?) {}
})
}
abstract class MyInlineClass<T> {
abstract fun someFactoryMethod(): T
}
inline fun <T> someInlineClass(crossinline someFunc: () -> T) : MyInlineClass<T> {
return object : MyInlineClass<T>() {
override fun someFactoryMethod(): T {
return someFunc()
}
}
}
karelpeeters
09/08/2017, 4:48 PMinline data class Point(
val x: Int
val y: Int
) {
fun opposite() = Point(-x, -y) //implicit inline
//generated toString, equals, ...
}
fun foo(point: Point) {
println(point.opposite())
}
would be compiled to
fun foo(x: Int, y: Int) {
println("Point(x=${-x}, y=${-y})")
}
trevjones
09/08/2017, 4:58 PMkarelpeeters
09/08/2017, 4:59 PMtrevjones
09/08/2017, 5:28 PMkarelpeeters
09/08/2017, 5:30 PMinline
class.