kotlin - 将参数传递给 kotlin 中的自定义 getter

标签 kotlin

我一直在阅读 properties在 Kotlin 中,包括自定义 getter 和 setter。

但是,我想知道是否可以创建带有额外参数的自定义 getter。

例如,考虑 Java 中的以下方法:

public String getDisplayedValue(Context context) {
    if (PrefUtils.useImperialUnits(context)) {
        // return stuff
    } else {
        // return other stuff
    }
}

注意PrefUtils中的静态方法必须有Context作为参数,因此删除它不是一种选择。

我想在 Kotlin 中这样写:
val displayedValue: String
    get(context: Context) {
        return if (PrefUtils.useImperialUnits(context)) {
            // stuff
        } else {
            // other stuff
        }
    }

但是我的 IDE 以红色突出显示了所有这些。

我知道我可以在我的类中创建一个函数来获取显示的值,但这意味着我必须使用 .getDisplayedValue(Context)在 Kotlin 中也是如此,而不是像 .displayedValue 那样能够通过名称来引用属性。 .

有没有办法创建这样的自定义 setter/getter ?

编辑:如果没有,最好为此编写一个函数,还是通过 Context进入类构造函数的参数?

最佳答案

据我所知,属性 getter 不能有参数。而是写一个函数。

关于kotlin - 将参数传递给 kotlin 中的自定义 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38684318/

相关文章:

android - 每当创建 Exception 实例时,suspendCoroutine 都会使应用程序崩溃

Android Studio - Kotlin 测试抛出 - 找不到类 - 空测试套件

android - 如何获取 "onBindViewHolder"中recyclerview项目的高度

android - 为什么 Kotlin 数据类对象有反引号?

kotlin - 在 Kotlin 中覆盖等于

c# - 将 Lambda 函数传递给 Xamarin.Android 绑定(bind)库中的 Kotlin 的 C# 生成代码

java - 用于两个数据库连接的通用 spring 数据存储库

javafx - Tornadofx Javafx - 如何重新加载 View /组件

intellij-idea - "No main manifest attribute"使用 IntelliJ IDEA 创建 Kotlin jar 时

android - 添加一个 fragment 到导航图的Backstack