Godot: يتم استدعاء وظائف setget للتعيين الذاتي

تم إنشاؤها على ١٢ نوفمبر ٢٠١٦  ·  3تعليقات  ·  مصدر: godotengine/godot

لا أعرف ما إذا كان هذا هو السلوك المقصود أم لا (إذا كان الأمر كذلك ، آسف ، فقط أغلق هذه المشكلة) ، ولكن من الواضح أنه لا ينبغي السماح بذلك!

دعنا نقول،
1) أريد أن يكون للمتغير foo قيمة 1 افتراضيًا ،
2) وتغير قيمتها عندما يتفاعل المستخدم بطريقة ما (دعنا نقول المدخلات).
3) بعد انتهاء عمل المستخدم ، يجب أن تكون قيمة foo هي 1 مرة أخرى.

ما يحدث هنا هو أنه يتم استدعاء الوظائف المرتبطة بـ setget كل مرة يتم فيها تعيين القيمة على 1 عندما تكون بالفعل 1 ، يجب استدعائها مرة واحدة (المرة الأولى) عندما تكون القيمة الأصلية مختلفة. هذا يقتل الأداء إلى حد ما بالنسبة لي ، أعلم أنه يمكنني القيام بذلك:

if (new_value == old_value):
   return

لكن هذا يجب أن يتم بشكل تلقائي.

feature proposal gdscript

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

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

ال 3 كومينتر

لا أعتقد أنه من الجيد القيام بذلك تلقائيًا. لا يجب أن يؤثر تعيين متغير بنفس القيمة الموجودة بالفعل على الأداء ، فهذا شيء يجب أن تتعامل معه الدالة setget إذا لزم الأمر. إضافةً إلى ذلك ، فإن إضافة فحص القيمة _سوف_ يؤثر على الأداء نظرًا لأنه فرع جديد (غير ضروري من الناحية المفاهيمية).

لا أعتقد أيضًا أنه يمكننا افتراض أن الإعداد بنفس القيمة لن يكون له أي تأثير على المحدد ، وبالتالي يمكن تجاوزه.

يبدو أن لديك أداة ضبط معقدة للغاية إذا كان من الممكن أن يؤدي تعيين قيمة واحدة في كل مرة إلى تحقيق هذا الأداء.

حسنًا ، عادةً ، عندما تقوم فقط بالتخصيص الذاتي لن يكون ذلك مشكلة ، ولكن إذا قمت بعمل أكثر من تعيين قيمة جديدة ، مثل ما يتعلق بـ "setget" ، فسيؤذي الأداء. خاصة إذا بقيت القيمة دون تغيير وتم تخصيص كل إطار ذاتيًا.

إلى جانب ذلك ، فإن جميع مجمعي C ++ (الذين أعرفهم) يحميك من مثل هذه الفظائع. (على الأقل بالنسبة للأنواع الأساسية ، زيادة التحميل على عامل التعيين ، فأنت تلغي هذه الحماية) في الواقع ، لقد رأيت بعض التعليمات البرمجية تؤكد التحقق من ذلك لمعرفة ما إذا كانت القيمة تظل كما هي بعد التخصيص الذاتي للأرقام العائمة على amd cpus. تم القيام بذلك كتحقق من سلامة مشروع ما نسيت ما كان يسمى.

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

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