JavaRush /جاوا بلاگ /Random-SD /جاوا ورجيس

جاوا ورجيس

گروپ ۾ شايع ٿيل
اڄ اسين جاوا ۾ varargs جي طور تي هڪ اهڙي شيء تي بحث ڪنداسين. Varargs - يا Variable Arguments - ھڪ ٽيڪنالاجي آھي جيڪا توھان کي اجازت ڏئي ٿي طريقن کي ٺاھي سگھي ٿي دليلن جي ھڪڙي ترتيب سان. هن آرٽيڪل ۾، اسين سکندا سين ته اهڙيون طريقا ڪيئن ٺاهيا وڃن، بحث ڪنداسين ڇو ويرارگ جي ضرورت آهي ۽ جڏهن انهن کي استعمال ڪرڻ بهتر آهي.

varargs ڇا آهن؟

Varargs متغير ڊگھائي دليل آھن: ھڪڙي خصوصيت جيڪا JDK5 ۾ ظاهر ٿي. Varargs اسان کي اجازت ڏين ٿا طريقن سان ٺاھڻ جي ھڪڙي ترتيب واري دليلن سان. ۽ وڏي ۾، اهو ممڪن هو ته اڳ ۾ ئي اهڙي طريقن پيدا ڪرڻ. سچ پچ، ائين ڪرڻ بلڪل آسان نه هو. اچو ته هڪ مثال ڏيو. اچو ته چئون ته اسان کي هڪ طريقو لکڻ جي ضرورت آهي جيڪو انٽيجر دليلن جو هڪ صوابديدي نمبر وٺي ۽ انهن کي گڏ ڪري. جاوا ورارگس - 1اسان وٽ ٻه آپشن آهن. اختيار 1 - اوور لوڊ:
class Calculator {
    int sum(int a, int b){...};
    int sum(int a, int b, int c){...};
    int sum(int a, int b, int c, int d){...};
    int sum(int a, int b, int c, int d, int e){...};
}
پر اوور لوڊ ڪرڻ سان ٻه مسئلا آهن. پهرين، اهو هميشه واضح ناهي ته اهو وقت بند ڪرڻ جو وقت آهي، ۽ ٻيو، اهو مشڪل آهي. صفا بهتر آهن. آپشن 2 - صفون:
class Calculator {
    int sum(int[] numbers){...};
}
هڪ صف سان اهو هاڻي وڌيڪ بوجھل ناهي، ۽ صف ڪجهه به نه لڳي ... جيستائين اهو طريقو سڏڻ جو وقت آهي:
public static void main(String... sss) {
    Calculator calculator = new Calculator();

    int[] arguments = new int[7];
    arguments[0] = 1;
    arguments[1] = 10;
    arguments[2] = 123;
    arguments[3] = 234;
    arguments[4] = 6234;
    arguments[5] = 12;
    arguments[6] = 8;

    int sum = calculator.sum(arguments);
}
اسان متفق آهيون، توهان ڪري سگهو ٿا، يقينا، هر شيء کي وڌيڪ مختصر طور تي لکندو. پر پهرين، مان اڃا تائين استعمال ڪرڻ جي تڪليف کي ظاهر ڪرڻ چاهيان ٿو variable-dength arguments، ۽ ٻيو، جيتوڻيڪ اسين ان کي هن طرح لکون ٿا:
int[] arguments = {1,10,123,234,6234,12,8};
int sum = calculator.sum(arguments);
پوءِ اسان اڃا تائين ڪوڊ جي گھڻي مقدار مان نجات حاصل نه ڪنداسين. بهرحال، جاوا 5 جي ڇڏڻ سان، Varargs خصوصيت انهن مسئلن کي حل ڪرڻ لاء ظاهر ٿيو. اهو ممڪن بنايو ويو ته دليلن جي هڪ خودمختيار تعداد کي طريقن ڏانهن منتقل ڪرڻ. اهو ڪجهه هن طرح نظر اچي ٿو:
public class Calculator {
    public static void main(String... sss) {
        Calculator calculator = new Calculator();
        int sum = calculator.sum(1,10,123,234,6234,12,8);
    }
    int sum(int... numbers){
       return Arrays.stream(numbers).sum();
    }
}
سو، اچو ته اختصار ڪريون. Varargs متغير ڊگھائي دليل آھن، ھڪڙي خاصيت جيڪا جاوا 5 جي ڇڏڻ سان ظاهر ٿي. اڳيون، اسان Varargs سان ڪم ڪرڻ لاء ڪجھ قاعدن تي ويجھي نظر ڪنداسين.

5 ضابطن جا وار

ضابطو 1. Vararg دليل (يا متغير/منتقلي ڊگھائي دليل) هيٺ ڏنل ايلپسس ذريعي اشارو ڪيو ويو آهي:
String... words
Integer... numbers
Person... people
Cat... cats
ضابطو 2. صوابديدي ڊگھائي جو ھڪڙو دليل صرف ڪجھ طريقي جي دليل جي طور تي بيان ڪري سگھجي ٿو:
void print(String... words)
int sum(Integer... numbers)
void save(Person... people)
void feed(Cat... cats)
ضابطو 3. طريقي جي جسم ۾ هر اهڙي متغير-لمبائي دليل هڪ صف آهي:
void print(String... words){
    for (int i = 0; i < words.length; i++) {
        System.out.println(words[i]);
    }
}
ضابطو 4. Vararg دليل لازمي طور تي طريقو دليلن جي فهرست ۾ آخري هجڻ گھرجي:
void print(String... words, String anotherWord) // - Так нельзя!
void print(String... words, int someNumber) // - Так нельзя!

void print(String anotherWord, String... words) // - Так можно
void print(int someNumber, String... words) // - Так можно
ضابطو 5: جيتوڻيڪ varargs arrays آهن، جڏهن هڪ طريقو سڏين ٿا جيڪو متغير-لمبائي دليلن کي وٺي ٿو، اهو ضروري ناهي ته هڪ صف ٺاهي. اهو ڪافي آهي ۽ اڃا به گهربل آهي ته صرف ڪاما سان الڳ ٿيل گهربل دليلن کي لسٽ ڪرڻ لاءِ:
public class Main {
    public static void main(String... sss) {
        print("How","же","прекрасно","изучать","Java");
    }

    static void print(String... words){
        for (int i = 0; i < words.length; i++) {
            System.out.println(words[i]);
        }
    }
}

ويڙهاڪن جا مثال

هيٺ ڏنل مثال ۾، اسان هڪ طريقو لکنداسين جيڪو وارارگز وٺي ٿو جنهن ۾ انگن اکرن تي مشتمل آهي ۽ پاس ڪيل عناصر جو تعداد ۽ انهن جي رقم ڏيکاري ٿي. اچو ته ٻئي هڪ صف ۽ انٽيجرز جو هڪ سلسلو هن طريقي سان پاس ڪريون (ٻئي آپشن صحيح آهن):
public static void main(String... sss) {
    int[] a = new int[100];
    for (int i = 0; i < a.length; i++) {
        a[i] = i;
    }

    sum(a);
    sum(1,2,3,4,5,6,7,8,9,10);
}

static void sum(int... numbers){
    final int length = numbers.length;
    final int sum = Arrays.stream(numbers).sum();
    final String lineSeparator = System.lineSeparator();

    System.out.printf("Кол-во элементов для сложения - %d, сумма - %d%s", length, sum, lineSeparator);
}
پروگرام کي هلائڻ کان پوءِ ٻاھر نڪرندو:

Кол-во элементов для сложения - 100, сумма - 4950 
Кол-во элементов для сложения - 10, сумма - 55 
اهو قابل ذڪر آهي ته اهو طريقو System.out.printfپڻ ورارگس کي قبول ڪري ٿو. جيڪڏهن اسان هن طريقي جي ڪوڊ تي نظر رکون ٿا، اسان هن کي ڏسنداسين:
public PrintStream printf(String format, Object ... args) {
    return format(format, args);
}
هڪ ٻيو وڏي پيماني تي استعمال ٿيل طريقو آهي جيڪو قبول ڪري ٿو varags String.format. ان جو ڪوڊ هيٺ ڏيکاريل آهي:
public static String format(String format, Object... args) {
    return new Formatter().format(format, args).toString();
}

جڏهن varargs استعمال ڪرڻ لاء؟

هن سوال جو جواب ان تي منحصر آهي ته ڪير پڇي رهيو آهي. جيڪڏهن ساڳيو سوال ڪجهه API جي ڪلائنٽ طرفان پڇيو ويو آهي جنهن ۾ varargs سان طريقا آهن، پوء جواب هوندو "اهڙا طريقا استعمال ڪريو جيترو ممڪن طور تي." ڪوڊ ڪلائنٽ لاءِ، varargs زندگيءَ کي تمام گهڻو آسان بڻائي ٿو ڪوڊ کي لکڻ ۾ آسان ۽ وڌيڪ پڙهڻ لائق. بهرحال، جيڪڏهن اهو سوال هڪ API ڊولپر کان پڇيو ويو آهي جيڪو حيران ٿي رهيو آهي ته توهان کي ڪيترا ئي طريقا ٺاهڻ گهرجي varargs سان، پوء جواب ٿيندو "توهان کي varargs اڪثر استعمال نه ڪرڻ گهرجي." Varargs صرف ان وقت استعمال ڪيو وڃي جڏهن ان جي استعمال جو فائدو واضح هجي. توهان کي وياررگس سان اوورلوڊ ڪرڻ جي طريقن کان به پاسو ڪرڻ گهرجي، ڇاڪاڻ ته اهو توهان جي ڪوڊ جي گراهڪن لاءِ اهو سمجهڻ ڏکيو ٿيندو ته اوورلوڊ ٿيل طريقن مان ڪهڙي کي اصل ۾ سڏيو وڃي ٿو.

نتيجو

تنهن ڪري، اسان هڪ ٻيو موضوع ڍڪيو آهي، جاوا ۾ varargs. اسان کي معلوم ٿيو ته اهو ڇا آهي. اسان varargs استعمال ڪرڻ جا ضابطا بيان ڪيا. اسان طريقن جي مثالن تي غور ڪيو ته ثالثي ڊگھائي دليلن سان، ۽ پڻ بحث ڪيو ويو ته اھو بھتر آھي ڪڏھن varargs استعمال ڪرڻ ۽ ڪڏھن انھن کي استعمال ڪرڻ کان پاسو ڪرڻ بھتر آھي. گھر جي ڪم جي طور تي، توھان ھيٺ ڏنل طريقا لاڳو ڪري سگھو ٿا:
  • اهڙو طريقو لکو voidجيڪو انگن اکرن جو سلسلو وٺي ۽ انهن جي رياضي جو مطلب واپس ڪري.
  • ھڪڙو طريقو لکو voidجيڪو تارن جو سلسلو وٺي ۽ سڀ کان ڊگھو لفظ پرنٽ ڪري.
  • هڪ طريقو لکو جيڪو واپس اچي boolean۽ قسم جي هڪ متغير کي پهرين دليل جي طور تي String، ۽ متغير جي ڊيگهه جو سلسلو booleanايندڙ دليل طور لکو.
    ممڪن قدر Stringآهن AND, OR, XOR. جيڪڏهن پهرين دليل ۾ ڪجهه ٻيو قدر آهي، ته طريقو هڪ استثنا اڇلائڻ گهرجي IllegalArgumentException.
    طريقي کي لازمي طور تي منطقي آپريشن (پهرين دليل ۾ بيان ڪيل) varargs دليلن جي هر عنصر تي ڪرڻ گهرجي ۽ حساب ڪتاب جو نتيجو واپس ڪرڻ گهرجي.
مثال دليل ۽ نتيجا:
  • "۽"، سچو، سچو، ڪوڙو - غلط موٽندو
  • "يا"، ڪوڙو، سچو، ڪوڙو، ڪوڙو - سچو موٽندو
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION