كيف يمكنني تجاهل النتائج الأولى من وظيفة في لوا؟
-
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()))
)
لا تنتمي إلى StackOverflow