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

我一直在阅读关于Kotlin的物业 ,包括习惯的获得者和制定者。

但是,我想知道是否有可能创建一个具有额外参数的自定义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传递给类构造函数的参数?

据我所知,属性获得者不能有参数。 写一个函数。

你可以做例如:

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