Функция глобального расширения в котлине
Эй, я хочу создать класс в kotlin, который будет содержать все функции расширения, которые я буду использовать в нескольких местах, например:
class DateUtils {
//in this case I use jodatime
fun Long.toDateTime() : DateTime = DateTime(this)
fun String.toDateTime() : DateTime = DateTime.parse(this)
}
class SomeClassWithNoConnectionToDateUtils {
fun handleDataFromServer(startDate: String) {
someOtherFunction()
//startDate knows about toDateTime function in DateUtils
startDate.toDateTime().plusDays(4)
}
}
Есть ли способ выполнить такую операцию
1 ответ
Решение
Наличие ваших расширений внутри DateUtils
класс сделает их доступными для использования только внутри DateUtils
учебный класс.
Если вы хотите, чтобы расширения были глобальными, вы можете просто поместить их на верхний уровень файла, не помещая их в класс.
package com.something.extensions
fun Long.toDateTime() : DateTime = DateTime(this)
fun String.toDateTime() : DateTime = DateTime.parse(this)
А затем импортируйте их, чтобы использовать их в другом месте, например:
import com.something.extensions.toDateTime
val x = 123456L.toDateTime()