gpt4 book ai didi

kotlin - Kotlin中具有扩展功能的伴侣对象?

转载 作者:行者123 更新时间:2023-12-02 13:36:47 25 4
gpt4 key购买 nike

我想拥有扩展功能,并使用kotlin-logging中的logger,并在伴侣对象中具有常量。

我的功能:

fun String.toFoo(): Foo {

logger.debug { "Mapping [$this] to Foo" }

if(MY_CONST.equals(this) {
...
}

问题是我不能将伴随对象与扩展功能一起使用,应该将 val logger = KotlinLogging.logger {}MY_CONST放在哪里?

最佳答案

如果只希望记录器成为单例,则可以创建一个包含记录器实例的对象,然后从那里访问它。

Object LoggerSingleton( val logger = KotlinLogging.logger{})

然后在您的扩展功能中
fun String.toFoo(): Foo {

LoggerSingleton.logger.debug { "Mapping [$this] to Foo" }

if(MY_CONST.equals(this) {
}

由于Kotlin中的Object保证只有一个实例,因此每次使用toFoo时都不会使用不同的记录器。

编辑
保留所需的类(class)名称
Use this signature
像这样:
Object StringLoggerSingleton( val logger = KotlinLogging.logger("String"))

关于kotlin - Kotlin中具有扩展功能的伴侣对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54423143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com