Home Articles

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

Asked
Viewed 1066 times
3

我一直在阅读Kotlin的properties,包括定制的吸气剂和制定者 .

但是,我想知道是否可以创建一个带有额外参数的自定义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用红色突出了所有这些 .

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

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

编辑:如果没有,最好为此编写一个函数,或将 Context 传递给类构造函数的参数?

2 Answers

  • 5

    据我所知,属性getter不能有参数 . 写一个函数代替 .

  • 2

    你可以这样做:

    val displayedValue: String by lazy {
         val newString = context.getString(R.string.someString)
         newString
    }
    

Related