目前,我有一个类似这样的查询:
override suspend fun getExternalTestsForProfile(profileKey: String, take: Int?): List<ExternalTestEntity> {
RealmDb.useRealm {
where(RealmExternalTest::class.java)
.sort(RealmExternalTestFields.CREATED_AT, Sort.DESCENDING)
.findAll()
我希望有这样的功能,如果take
为null,它将获取集合中的所有元素,但如果提供了Int,则只会在这种情况下获取和映射.
所以我的"期望"功能是这样的:
override suspend fun getExternalTestsForProfile(profileKey: String, take: Int?): List<ExternalTestEntity> {
RealmDb.useRealm {
where(RealmExternalTest::class.java)
.sort(RealmExternalTestFields.CREATED_AT, Sort.DESCENDING)
.findAll()
if (take != null) {
.take(3)
} else {
// Do not apply a .take
}
.map { realmExternalTest -> realmExternalTest.toExternalTestEntity() }
我希望在映射之前进行拍摄,因为映射可能很昂贵,因为它可能包含大量元素.因此,只取3个元素就执行昂贵的映射操作是浪费.
我考虑过重载getExternalTestsForProfile
,一个有take
,一个没有,但我希望我可以把它结合起来,因为这里唯一真正的区别是映射和返回了多少元素.
谢谢