将parameter passing给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 }