¿Es posible agregar la función de extensión a todas las clases? Estaba pensando en agregarlo a alguna clase base común como Object. ¿Es posible?
Con Kotlin, Any
es el supertipo como Object
para Java.
fun Any.myExtensionFunction() { // ... }
Y si también quieres admitir null-receiver:
fun Any?.myExtensionFunction() { // ... }
Depende de si desea utilizar el tipo del objeto en la firma (ya sea en otro argumento o en el tipo de retorno). Si no, use Any(?)
como dice la respuesta de Kevin Robatel; pero si lo hace, necesita usar genéricos, por ejemplo (de la biblioteca estándar)
inline fun <T, R> T.run(block: T.() -> R): R inline fun <T> T.takeIf(predicate: (T) -> Boolean): T?
etc.