Они в основном эквивалентны.Я бы выбрал то, что наиболее читаемо для вас и / или вашей команды.
Мне лично нравятся прямые указания, если достаточно ясно, что делается в функции.Обычно это имеет место, если это однострочный или если за инициализацией следует что-то вроде .apply
(так что в основном это просто относительно короткий).Для ваших функций я бы на самом деле ввел что-то вроде следующего:
inline fun <reified T> newIntent(context: Context, applyToIntent : Intent.() -> Unit = {}) = Intent(context, T::class.java).apply(applyToIntent)
, которое затем можно использовать для нескольких действий.Использование может быть таким простым:
newIntent<UsersActivity>(context) {
putExtra(FOLLOW, following)
putExtra(USER, userId)
}
Или, если вам действительно нужна текущая функция (хотя я не вижу реальной причины для этого), она остается достаточно простой:
fun getNewIntent(context: Context, following: Boolean, userId: String) = newIntent<UsersActivity>(context) {
putExtra(FOLLOW, following)
putExtra(USER, userId)
}