سؤال

أنا أكتب قائمة كسولة لاسترداد العناصر من قاعدة بيانات بمعايير معينة وترحيل صفحات محدد (فهرس البداية وعدد العناصر المطلوبة).

عند إنشاء القائمة، أقوم بإحصاء العدد الإجمالي للعناصر في الجدول المعين، بحيث يكون لدي حجم أولي للقائمة (أولي, ، لأن القائمة تسمح بإضافة العناصر وإزالتها).

إنه يعمل تقريبًا، ولكن أواجه بعض المشاكل عند تحديد العدد المحدد للعناصر المطلوب جلبها:في الواقع، أسمح للمستخدمين بتحديد أمر معين حجم الجلب (دعنا نقول 10, ، في هذا المثال).

لتحديد العدد الدقيق للعناصر التي سيتم جلبها، في الوقت الحالي، أقوم بإضافة حجم الجلب عامل إلى المؤشر الحالي من العناصر الموجودة في المجموعة (آخر عنصر تم استرداده من جدول قاعدة البيانات):إذا كانت النتيجة أصغر أو مساوية للعدد الإجمالي، فلا أقوم بأي إجراء (ويعمل الجلب بشكل واضح تمامًا)، ولكن إذا كان أكبر من الإجمالي، فإن حسابي للعناصر المتبقية المطلوب جلبها يفشل.

في الواقع، لحساب عدد العناصر المتبقية، أطرح من العدد الإجمالي للعناصر في المجموعة، قيمة المؤشر الحالي + 1 (الفهرس قائم على الصفر)، وهو لا يعمل في جميع الظروف.

هل لديك فكرة عن كيفية حساب العوامل الصحيحة؟شكرا جزيلا لكم!

هل كانت مفيدة؟

المحلول 3

شكرًا لك على الإجابات، لكنني وجدت الحل، الذي لم يكن واضحًا ولا بسيطًا:

index -> destination index (within the collection)
diff_to_index -> index - current_index
items_to_fetch -> (current_index + 1) + items_to_fetch >= total_count ? total_count - (current_index + 1) : max(diff_to_index, fetch_size)

هتافات!:)

نصائح أخرى

أعتقد أنه يجب عليك القيام بشيء مثل:

items_to_fetch = min( current_index + fetch_size, total_count )

ماذا عن:

items_to_fetch = max(0, min(fetch_size, total_count - current_index + 1))

تأكد أيضًا من حصولك على العدد الإجمالي الحالي في وقت التنفيذ، وليس بعض القيمة المخزنة مؤقتًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top