在Java中,我会这样做:
在 Kotlin 中,我有这段等效的代码:
class Person {
private Record record;
public String name() {
record().get("name");
}
private Record record() {
if (record == null) {
refetch();
}
return record;
}
private void refetch() {
record = service.doSomething()
}
}
在 Kotlin 中,我有这段等效的代码:
class Person(private var record: Record?) {
fun name() : String {
record().get("name");
}
private fun record() : Record {
record ?: refetch()
return record!!;
}
private fun refetch() {
record = service.doSomething()
}
}
你看到了,我正在使用!!
运算符,但我并不喜欢。是否有其他更惯用的方法来做到这一点?
如果我简单地按照Java的方式(if(record == null)
),我会得到这个错误:
智能转换为“Record”是不可能的,因为“record”是一个可变属性,可能在此时被更改
?
。是打字错误。 - Héctor