在科特林
问题描述:
我一直在阅读有关properties在科特林,包括自定义getter和setter方法将参数传递给定制吸气。在科特林
不过,我想知道是否有可能创建一个额外的参数定制吸气。
例如,请考虑以下方法在Java中:
public String getDisplayedValue(Context context) {
if (PrefUtils.useImperialUnits(context)) {
// return stuff
} else {
// return other stuff
}
}
注意,在PrefUtils
静态方法必须具有Context
作为参数,因此删除这是不是一种选择。
我想将它写像这样在科特林:
val displayedValue: String
get(context: Context) {
return if (PrefUtils.useImperialUnits(context)) {
// stuff
} else {
// other stuff
}
}
但我的IDE亮点所有这一切都为红色。
我知道我可以在我的班级中创建一个函数来获取显示的值,但这意味着我将不得不在Kotlin中使用.getDisplayedValue(Context)
,而不能像在.displayedValue
中那样按名称引用属性。
有没有办法像这样创建一个自定义getter?
编辑:如果不是,最好是为此编写一个函数,或者将Context
传递给类构造函数的参数?
答
据我所知,属性getter不能有参数。改写一个函数。
答
比如,你可以这样做:
val displayedValue: String by lazy {
val newString = context.getString(R.string.someString)
newString
}
难道是不好的做法,通过'Context'到类的构造函数使用自定义的getter的参数? –
这不是最简单的方法,但如果你需要一个属性的语法,那么做 – voddan