我有一个使用案例,需要双重空值,类似于x: SomeClass??
。请参见以下Java代码中的prefetchedRecord
参数。
public Optional<SomeClass> fetchRecord(Long id) {
...
}
public void process(
Long id,
Optional<Optional<SomeClass>> prefetchedRecord
) {
Optional<SomeClass> fetchedRecord = prefetchedResult.orElseGet( () -> fetchRecord(id) )
if (fetchedRecord.isPresent()) { ... process ... }
else { ... do something else ... }
}
所以对于
prefetchedRecord
,内部的Optional表示获取的结果,而外部的Optional则显示在调用process
函数之前是否进行了获取。我使用两个Optional来避免重新获取记录,即使获取返回了空值。你会如何在Kotlin中编写这个代码?我意识到使用双重可选项并不是很清晰,我可以使用自定义类替代,比如...
data class FetchResult<T>(val result: T, val fetched: boolean)
但是我想知道 Kotlin 中是否有内置支持此用例的功能。
Result
没有任何关系。但是如果你愿意,你可以保留这个名字,或者为你的情况找到更好的名字。 - ZSergei