سؤال

في لوا باستخدام = المشغل دون l-القيمة يبدو أن يعادل الطباعة(r-value), وإليك بعض الأمثلة تشغيل في لوا مستقل مترجم:

> = a
nil
> a = 8
> = a
8
> = 'hello'
hello
> = print
function: 003657C8

وهلم جرا...

سؤالي هو :أين يمكنني أن أجد وصفا مفصلا لهذا الاستخدام = المشغل ؟ كيف يعمل ؟ هو بالإيحاء الخاصة الافتراضية l-قيمة ؟ أعتقد أن أصل المشكلة هي أنني لا أعرف ماذا اكتب في جوجل للعثور على معلومات حول هذا الموضوع :-)

تحرير:

شكرا على الأجوبة, أنت على حق انها سمة من سمات المترجم.سؤال سخيف, لأنني لا أعرف أي سبب تجاهلها تماما واضحة.يجب تجنب نشر قبل قهوة الصباح :-) للتأكد من اكتمالها, هنا هو رمز التعامل مع هذا في المترجم:

while ((status = loadline(L)) != -1) {
  if (status == 0) status = docall(L, 0, 0);
  report(L, status);
  if (status == 0 && lua_gettop(L) > 0) {  /* any result to print? */
    lua_getglobal(L, "print");
    lua_insert(L, 1);
    if (lua_pcall(L, lua_gettop(L)-1, 0, 0) != 0)
      l_message(progname, lua_pushfstring(L,
                           "error calling " LUA_QL("print") " (%s)",
                           lua_tostring(L, -1)));
  }
}

edit2:

حقا أن تكون كاملة ، خدعة كاملة عن دفع القيم على المكدس هو في "pushline" وظيفة:

if (firstline && b[0] == '=')  /* first line starts with `=' ? */
  lua_pushfstring(L, "return %s", b+1);  /* change it to `return' */
هل كانت مفيدة؟

المحلول

نقلا عن رجل الصفحة:

في الوضع التفاعلي ...إذا كان الخط يبدأ مع ' = ' ثم لوا يعرض قيم جميع التعبيرات في ما تبقى من الخط.عبارات يجب أن تكون مفصولة بفواصل.

نصائح أخرى

أعتقد أنه يجب أن يكون سمة من سمات تقف وحدها مترجم.أنا لا يمكن أن تجعل هذا العمل على شيء لقد جمعت لوا في.

انا لا اسميها ميزة المترجم فقط إرجاع النتيجة من البيان.إنه عمله ، أليس كذلك ؟

المهمة ليست تعبير أن يعود في شيء Lua كما هي في C.

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