كيف يمكنني تجاهل النتائج الأولى من وظيفة في لوا؟

StackOverflow https://stackoverflow.com/questions/3165845

  •  02-10-2019
  •  | 
  •  

سؤال

يمكن لوظائف لوا إرجاع نتائج متعددة:

a, b, c = unpack({'one', 'two', 'three'})

إذا لم أكن مهتمًا بقيمة الإرجاع الثالثة ، يمكنني اختيار تجاهلها عند استدعاء الوظيفة:

a, b = unpack({'one', 'two', 'three'})

هل هناك طريقة مماثلة لتجاهل العناصر الأولى X عند استدعاء الوظيفة؟

يمكنني كتابة هذا الرمز إذا أردت فقط قيمة الإرجاع الثالثة ، لكنني كنت أتساءل عما إذا كان هناك رمز أنظف:

_, _, c = unpack({'one', 'two', 'three'})
هل كانت مفيدة؟

المحلول

يمكنك استخدام ال select وظيفة. ستعيد جميع الحجج بعد index, ، أين index هي الحجة الأولى المقدمة ل select.

أمثلة:

c = select(3, unpack({'one', 'two', 'three'}))
b, c = select(2, unpack({'one', 'two', 'three'}))
b = select(2, unpack({'one', 'two', 'three'}))   --discard last return value

ومع ذلك ، أعتقد في معظم الحالات الكتابة _,_,c = f() هو أنظف. select يكون مفيدًا في الغالب عندما لا يكون رقم الوسيطة معروفًا مقدمًا ، أو عند استدعاء الوظائف معًا (على سبيل المثال f(select(2, g())))

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