【问题标题】:Global extension function in kotlinkotlin 中的全局扩展功能
【发布时间】:2017-06-03 18:57:42
【问题描述】:

嘿,我想在 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)
    }
}

有没有办法进行这样的操作

【问题讨论】:

    标签: kotlin extension-function


    【解决方案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()
    

    【讨论】:

    • 感谢您的快速回复,并对菜鸟问题感到抱歉,但我是来自 Java 的 kotlin 新手。如何在构造函数中使用数据以在函数中使用?
    • 不用担心,这是一个完全合理的问题。用 Kotlin 玩得开心 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    相关资源
    最近更新 更多