new

inline fun <R> Scope.new(constructor: () -> R): R

Auto resolve a class dependencies by using its constructor reference. The resolution is done at compile time by leveraging inline functions, no reflection is required.

Example:

val myModule = module {
viewModel { new(::MyViewModel) }
}

Author

Marcello Galhardo


inline fun <R, T1> Scope.new(constructor: (T1) -> R): R
inline fun <R, T1, T2> Scope.new(constructor: (T1, T2) -> R): R
inline fun <R, T1, T2, T3> Scope.new(constructor: (T1, T2, T3) -> R): R
inline fun <R, T1, T2, T3, T4> Scope.new(constructor: (T1, T2, T3, T4) -> R): R
inline fun <R, T1, T2, T3, T4, T5> Scope.new(constructor: (T1, T2, T3, T4, T5) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6> Scope.new(constructor: (T1, T2, T3, T4, T5, T6) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) -> R): R
inline fun <R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> Scope.new(constructor: (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) -> R): R

See also