Mudlet: استكمل الوظائف المفهرسة بـ 0 مع 1 مفهرسة

تم إنشاؤها على ١٦ أبريل ٢٠٢٠  ·  8تعليقات  ·  مصدر: Mudlet/Mudlet

ملخص موجز للمشكلة / وصف العنصر المطلوب:

لدينا عدد قليل من الوظائف في TLuaInterpreter.cpp من تصميم مبكر يبدأ مؤشره من 0 - وهو ليس لغة Lua الاصطلاحية وغير بديهي . تحتاج إلى إضافة مكملات 1 مفهرسة إليها ، مثل https://wiki.mudlet.org/w/Manual : Mapper_Functions # getExitStubs1.

خطوات إعادة إظهار المشكلة / أسباب إضافة الميزة:

واجهة برمجة تطبيقات أكثر سهولة.

ناتج الخطأ / النتيجة المتوقعة للميزة

أي دالة تقوم بإرجاع جدول مفهرس يبدأ من 0 يجب أن يكون لها أيضًا وظيفة تكميلية تبدأ في الفهرسة عند 1.

معلومات إضافية ، مثل إصدار Mudlet ونظام التشغيل والأفكار حول كيفية الحل / التنفيذ:

4.6.2

enhancement help wanted

التعليق الأكثر فائدة

حسنًا ، ماذا لو أعلنا أنه في النهاية سيكون لدينا getLuaApiVersion() سيعيد سلسلة رقم إصدار بالشكل 1.xy ، ونعد بأنه عندما ننتقل إلى الإصدار 2 ، ستكون جميع الوظائف المعطلة / المنحلة تم إصلاحه / إزالته وسيحتوي كل الباقي على قيم معالجة وإرجاع موحدة تمامًا للوسيطة (بما في ذلك رسائل خطأ nil + لكل مشكلة في وقت التشغيل).

بالطبع سيوفر بعد ذلك فرصة لتحطيم التوافق مع الإصدارات السابقة لذلك نحتاج إلى إدخاله في Lua API في أسرع وقت ممكن حتى تتمكن الحزم والنصوص من البدء في الدفاع عن نفسها ضد مثل هذا التغيير المفاجئ.

قد نفكر في القيام بذلك بالتزامن مع التغيير إلى (float) mudlet::mMudletXmlDefaultFormat إلى قيمة> = 2.0 - والذي سيكون مناسبًا لأن أي ملف حفظ XML أو حزمة تحمل مثل هذا الرقم سيتم رفضها تمامًا (حسب التصميم) من قبل أي Mudlet الإصدار منذ 3.0.1 وسيطالبك بما يلي:

[ ALERT ] - Sorry, the file being read:
            XXXXX.xml
            reports it has a version (2.0.0) it must have come from a later Mudlet version,
            and this one cannot read it, you need a newer Mudlet!

وغني عن القول إن مثل هذا التغيير سيكون هائلاً وسيحتاج أيضًا إلى أن يكون متوافقًا مع إصدار إصدار Major Mudlet لكنني لا أتوقع أن يكون ذلك قبل الإصدار 6.0 من Mudlet على أقرب تقدير . OTOH سيكون من الممكن بعد ذلك التبديل إلى إصدار Lua لاحق.

ال 8 كومينتر

ماذا عن إضافة getExitStubs1 و getExitStubs0 حتى نتمكن من إعطاء تحذير عادل وجعل getExitStubs يعمل كما هو متوقع في مرحلة ما؟ بهذه الطريقة يمكن أن يصبح Mudlet أكثر اصطلاحية وبديهية في النهاية.

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

إذا تمكنا فقط من التأثير بطريقة سحرية على كل الكود الذي تم وضعه هناك ... :)

أتذكر شيئًا مثل أمر الإصلاح الخاص بـ rust-lang ... (أو كان إصلاح golang) حيث سيصلح الأشياء بطريقة سحرية.

--the following possible functions have 0-indexed
function getRoomsByPosition()
function getExitStubs() --Obviously..
function getAreaRooms()

تعديل:
يبدو أن هذا سيكون فقط تلك الوظائف التي تحتاج إلى تغيير لإرجاع رد مناسب مفهرس.

حسنًا ، ماذا لو أعلنا أنه في النهاية سيكون لدينا getLuaApiVersion() سيعيد سلسلة رقم إصدار بالشكل 1.xy ، ونعد بأنه عندما ننتقل إلى الإصدار 2 ، ستكون جميع الوظائف المعطلة / المنحلة تم إصلاحه / إزالته وسيحتوي كل الباقي على قيم معالجة وإرجاع موحدة تمامًا للوسيطة (بما في ذلك رسائل خطأ nil + لكل مشكلة في وقت التشغيل).

بالطبع سيوفر بعد ذلك فرصة لتحطيم التوافق مع الإصدارات السابقة لذلك نحتاج إلى إدخاله في Lua API في أسرع وقت ممكن حتى تتمكن الحزم والنصوص من البدء في الدفاع عن نفسها ضد مثل هذا التغيير المفاجئ.

قد نفكر في القيام بذلك بالتزامن مع التغيير إلى (float) mudlet::mMudletXmlDefaultFormat إلى قيمة> = 2.0 - والذي سيكون مناسبًا لأن أي ملف حفظ XML أو حزمة تحمل مثل هذا الرقم سيتم رفضها تمامًا (حسب التصميم) من قبل أي Mudlet الإصدار منذ 3.0.1 وسيطالبك بما يلي:

[ ALERT ] - Sorry, the file being read:
            XXXXX.xml
            reports it has a version (2.0.0) it must have come from a later Mudlet version,
            and this one cannot read it, you need a newer Mudlet!

وغني عن القول إن مثل هذا التغيير سيكون هائلاً وسيحتاج أيضًا إلى أن يكون متوافقًا مع إصدار إصدار Major Mudlet لكنني لا أتوقع أن يكون ذلك قبل الإصدار 6.0 من Mudlet على أقرب تقدير . OTOH سيكون من الممكن بعد ذلك التبديل إلى إصدار Lua لاحق.

هل من الممكن حلها على غرار جعل الجدول [0] والجدول [# جدول] نفس المرجع؟ إذن ، الكود الذي يستخدم الجدول [0] و ipairs يعمل بدون مشكلة؟
لا أعتقد أن هذا هو الإصلاح لأنه يتسبب في حدوث حدث مكرر للرمز الذي يستخدم for i=0, #table do
يبدو أنها مشكلة لها حل بديل ذكي.

هل يمكن أن تكون هناك طريقة باستخدام metatable _index؟ أنا لا أفهم بشكل كامل البيانات الوصفية.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات