ब्लॉक पैरामीटर सूची में तारांकन - रूबी, लैम्ब्डा, ब्लॉक

रूबी में, मेरे पास निम्नलिखित के समान कोड है

foo { |x, y| puts y }

क्योंकि संकलक / दुभाषिया मुझे चेतावनी देता रहता हैअप्रयुक्त संस्करण X के बारे में, मैंने x को "*" के साथ बदल दिया और कंपाइलर ने शिकायत करना बंद कर दिया। (मैं नहीं जानता कि मैंने यह क्यों तय किया * सबसे अच्छा विकल्प था ... यह बस हुआ ...)

foo { |*, y| puts y }

यह वास्तव में क्या करता है? और क्या इसके कोई दुष्प्रभाव हैं?

उत्तर:

उत्तर № 1 के लिए 4

इस संदर्भ में तारांकन को "स्पैट" ऑपरेटर कहा जाता है। इसका मतलब है कि आप इसके स्थान पर कई मापदंडों को पारित कर सकते हैं और ब्लॉक उन्हें एक सरणी के रूप में देखेंगे।

I"m not sure how or why it works without a variable name after it, though (e.g. foo { |*x, y| puts y })। मुझे लगता है कि इसका मतलब है कि ब्लॉक पिछले एक को छोड़कर सभी मापदंडों को अनदेखा करता है, जो इसे प्रिंट करता है।


संबंधित सवाल
सबसे लोकप्रिय