खोज…


टिप्पणियों

पैटर्न मिलान प्रदान की गई पैटर्न के आधार पर ब्रांचिंग की प्रक्रिया है। सभी पैटर्न मिलान एक switch अभिव्यक्ति के भीतर किया जाता है, और अलग-अलग case भाव पैटर्न का प्रतिनिधित्व करते हैं।

पैटर्न मिलान के मूलभूत नियम हैं:

  • पैटर्न हमेशा ऊपर से नीचे तक मिलान किया जाएगा;
  • सबसे ऊपरी पैटर्न जो इनपुट मूल्य से मेल खाता है उसकी अभिव्यक्ति निष्पादित है;
  • _ पैटर्न कुछ भी मेल खाता है, इसलिए case _: default: बराबर है:।

जब सभी संभावित मामलों को संभाल लिया जाता है, तो कैच-ऑल _ पैटर्न या default केस की आवश्यकता नहीं होती है।

Enum मिलान

निम्नलिखित मान लें:

enum Operation {
    Multiply(left : Int, right : Int);
}

एनम मिलान इस प्रकार किया जा सकता है:

var result = switch(Multiply(1, 3)) {
    case Multiply(_, 0):
        0;
    case Multiply(0, _):
        0;
    case Multiply(l, r):
        l * r;
}

संदर्भ

संरचना मिलान

निम्नलिखित संरचना मान लें:

var dog = {
    name : "Woofer",
    age : 7
};

एनम मिलान इस प्रकार किया जा सकता है:

var message = switch(dog) {
    case { name : "Woofer" }:
        "I know you, Woofer!";
    case _:
        "I don't know you, sorry!";
}

संदर्भ

अर्रे मिलान

var result = switch([1, 6]) {
    case [2, _]:
        "0";
    case [_, 6]:
        "1";
    case []:
        "2";
    case [_, _, _]:
        "3";
    case _:
        "4";
}

संदर्भ

या पैटर्न

| ऑपरेटर कई स्वीकृत पैटर्न का वर्णन करने के लिए पैटर्न के भीतर कहीं भी उपयोग किया जा सकता है। यदि एक-पैटर्न में एक कैप्चर किया गया चर है, तो उसे अपने दोनों उप-पैटर्न में प्रदर्शित होना चाहिए।

var match = switch(7) {
    case 4 | 1: "0";
    case 6 | 7: "1";
    case _: "2";
}

संदर्भ

गार्ड

गार्ड के साथ पैटर्न को और प्रतिबंधित करना भी संभव है। ये case ... if(condition): परिभाषित होते हैं case ... if(condition): वाक्यविन्यास।

var myArray = [7, 6];
var s = switch(myArray) {
    case [a, b] if (b > a):
        b + ">" +a;
    case [a, b]:
        b + "<=" +a;
    case _: "found something else";
}

संदर्भ

एक्सट्रैक्टर्स

चिमटा extractorExpression => match एक्सप्रेशन extractorExpression => match अभिव्यक्ति द्वारा पहचाना जाता है। चिमटा दो भागों से मिलकर बनता है, जिसे => ऑपरेटर द्वारा अलग किया जाता है।

  1. बाईं ओर कोई भी अभिव्यक्ति हो सकती है, जहां अंडरस्कोर _ की सभी घटनाएं वर्तमान में मिलान किए गए मान से बदल दी जाती हैं।
  2. दाईं ओर एक पैटर्न है जो बाईं ओर के मूल्यांकन के परिणाम के साथ मेल खाता है।

चूंकि दाईं ओर एक पैटर्न है, इसमें एक और चिमटा हो सकता है। निम्नलिखित उदाहरण "चेन" दो चिमटा:

static public function main() {
    switch(3) {
        case add(_, 1) => mul(_, 3) => a:
            trace(a); // mul(add(3 + 1), 3)
    }
}

static function add(i1:Int, i2:Int) {
    return i1 + i2;
}

static function mul(i1:Int, i2:Int) {
    return i1 * i2;
}

वर्तमान में या पैटर्न के भीतर एक्सट्रैक्टर्स का उपयोग करना संभव नहीं है। हालांकि, एक चिमटा के दाईं ओर या पैटर्न होना संभव है।

संदर्भ



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow