JavaRush /جاوا بلاگ /Random-SD /ڇا ڪوٽلن ۽ جاوا جي وچ ۾ ڪو فرق آهي؟
Paul Soia
سطح
Kiyv

ڇا ڪوٽلن ۽ جاوا جي وچ ۾ ڪو فرق آهي؟

گروپ ۾ شايع ٿيل
هيلو سڀ. مان توهان کي ڪوٽلن ٻوليءَ بابت ڪجهه بنيادي ڳالهيون ٻڌائڻ چاهيان ٿو، جيڪي نئين سکندڙن لاءِ ڪارآمد ثابت ٿينديون. بس ائين ئي ٿئي ٿو ته هاڻي صرف هڪ ٻوليءَ سان اينڊرائيڊ ڊولپمينٽ ۾ اچڻ مشڪل ٿي پوندو - اڪثر نوان پراجيڪٽ ڪوٽلن ۾ لکڻ شروع ٿيندا آهن، اڪثر تيار ڪيل پروجيڪٽ جاوا ۾ لکيل هوندا آهن. ڇا ڪوٽلن ۽ جاوا جي وچ ۾ ڪو فرق آهي؟  - 1هن وقت مون وٽ ڪم تي 4 منصوبا آهن: ٻه ڪوٽلن ۾ ۽ ٻه جاوا ۾ (هڪ وڏو مکيه هڪ ۽ ٽي ننڍا اندروني استعمال لاءِ). جڏهن ڪمپني ڪوٽلن ۾ نوان منصوبا لکڻ جو فيصلو ڪيو، اهو فيصلو مون کي عجيب لڳو. مختلف ٻولين کي ڇو ملائي؟ ڪوٽلين ۾ ڪنهن ٻئي کي لکڻ ڏيو، اسان کي ان جي ضرورت ڇو آهي؟ پر ڪو به رستو نه هو، تنهنڪري مون هڪ نئين ٻولي کي آزمائي ڪرڻ جو فيصلو ڪيو ۽ ان کي پڙهڻ شروع ڪيو. پهريون ڪوڊ، يقينا، مڪمل طور تي جاوا انداز ۾ لکيو ويو، جنهن ۾ وڌيڪ غلط فهمي ۾ اضافو ٿيو: مون کي نئين ٻولي ڇو گهرجي؟ پر جيئن مون ان کي استعمال ڪيو، مون کي وڌيڪ ۽ وڌيڪ فائدا مليا ۽ هاڻي (مان تقريباً 2 سالن کان ڪوٽلن ۾ لکي رهيو آهيان) مان چئي سگهان ٿو ته ڪوٽلن اينڊرائيڊ ڊولپمينٽ ۾ وڌيڪ آسان آهي. مان ڪجھ nuances ڏيکارڻ چاهيان ٿو جيڪي ڪنهن ماڻهو لاءِ واضح نه هونديون جن جاوا کان پوءِ ڪوٽلن سکڻ شروع ڪرڻ جو فيصلو ڪيو. مان توهان کي اهو به ياد ڏياريان ته Android جاوا 8 استعمال ڪري ٿو، موجوده موجوده ورزن 14 سان گڏ. سو، پهريون - متغير : Java:
Int a = 1;
String s = "test";
ڪوٽلن:
val a = 1
var b = 2
val c: Int
val d = "test"
ڪوٽلن ۾ متغير جا ٻه قسم آهن: val (صرف پڙهڻ لاءِ) ۽ var (پڙهڻ-لکڻ). جڏهن به ممڪن هجي ته وال استعمال ڪرڻ جي صلاح ڏني وئي آهي. اهو ضروري ناهي ته متغير جي قسم جو اعلان ڪيو وڃي جيڪڏهن متغير اڳ ۾ ئي شروع ڪيو ويو آهي. ٻيو - جيڪڏھن/ٻيو، بيانن کي تبديل ڪريو : توھان ڪيترا ڀيرا استعمال ڪندا آھيو بيانن جي ھن زنجير جاوا ۾:
if (вариант 1)
{...}
else if (вариант 2)
{...}
...
else
{...}
يا هن طرح:
switch(выражениеДляВыбора) {
        case (meaning 1):
                Код1;
                break;
        case (meaning 2):
                Код2;
                break;
...
        case (meaning N):
                КодN;
                break;
        default:
                КодВыбораПоУмолчанию;
                break;
        }
Kotlin ۾، جڏهن آپريٽر استعمال ڪيو ويندو آهي اهڙين اظهارن لاءِ (جيتوڻيڪ if/else پڻ استعمال ڪري سگهجي ٿو):
val x = 5
val result = when(x) {
        0, 1 -> "cool"
        2 -> "bad"
        5 -> "normal"
        else -> "error"
}
System.out.println(result)
هتي اسان نه رڳو حالتن جي زنجير مان گذريا آهيون، پر فوري طور تي مڪمل اظهار کي نتيجو متغير ڏانهن منسوب ڪيو، جنهن اسان کي ڪوڊ جون ڪافي لائينون محفوظ ڪيون. پر تڏهن به، جيڪڏهن توهان وٽ هڪ برانچ ۾ صرف ٻه آپشن آهن، آئون استعمال ڪرڻ جي صلاح ڏيان ٿو معمولي if..else. جڏهن تعمير صرف ٽن اختيارن مان ننڍو ٿيندو. اچو ته اڳتي وڌون - Constructors . اهو هتي هڪ افسانوي ڪهاڻي آهي. صرف جاوا ۽ ڪوٽلن ۾ ڪوڊ جو مقابلو ڪريو. جاوا:
public class Person {

    private String firstName;
    private String lastName;
    private int age;

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
ڪوٽلن:
class Person(private val firstName: String,
             private val lastName: String,
             private var age: Int) {
}
اهو لڳي سگھي ٿو ته ڪوٽلن ڪوڊ ۾ ڪا شيءِ اڻپوري رهجي وئي هئي. پر نه، اهي ٻه هڪجهڙا ڪوڊ آهن مختلف ٻولين ۾. اچو ته ان کي ٿورو سمجهون. Kotlin ۾، تعمير ڪندڙ سڌو سنئون طبقي جي نالي جي جسم ۾ لکي سگھجي ٿو (پر جيڪڏھن توھان چاھيو ٿا، توھان اھو ڪري سگھو ٿا پراڻي طريقي سان، جيئن جاوا ۾). تنهن ڪري، اسان ٽي متغير لکيا آهن، جاوا ۾ اسان عمر جي متغير لاء هڪ تعمير ڪندڙ، حاصل ڪندڙ ۽ هڪ سيٽر ٺاهيو آهي. Kotlin ۾، جيئن اسان کي ياد آهي، val variable صرف پڙهڻ لاءِ آهي، ۽ تنهن ڪري انهن متغيرن لاءِ سيٽر موجود نه آهي (ڪوٽلن پاڻ کي هود جي تحت getter-setters لاڳو ڪري ٿو). var متغير توهان کي سيٽر استعمال ڪرڻ جي اجازت ڏئي ٿو. نتيجي طور، اسان تقريباً هڪ لڪير ۾ ساڳي شيءِ لکي هئي جيڪا جاوا ۾ درجن کان وڌيڪ لائينون ورتيون. هتي آئون ڪوٽلن ۾ ڊيٽا ڪلاس بابت وڌيڪ پڙهڻ جي صلاح ڏيان ٿو. پر اهو سڀ ڪجهه نه آهي ته ڪوٽلن جي تعمير ڪندڙ سٺا آهن. پر ڇا جيڪڏھن توھان کي ٻن ٺاھيندڙن جي ضرورت آھي؟ ڇا جيڪڏهن ٽي آهن؟ جاوا ۾ اهو هن طرح نظر ايندو:
public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

public Person(String firstName) {
        this.firstName = firstName;
    }
ڪجھ به پيچيده نه آهي، صرف ڪيترن ئي ڊزائنر جي ضرورت آهي، اهو ئي آهي جيڪو انهن ڪيو. ڪوٽلن ۾ توهان حاصل ڪري سگهو ٿا صرف هڪ تعمير ڪندڙ سان. ڪيئن؟ اهو سادو آهي - ڊفالٽ قدر.
class Person(private val firstName: String,
             private val lastName: String? = null,
             private var age: Int = 5) {
}
اسان ٺاھيندڙ ۾ ڊفالٽ ويلز مقرر ڪيا آھن ۽ ھاڻي انھن کي سڏيندي ھن طرح نظر ايندي:
Person(firstName = "Elon", lastName = "Mask", age = 45)
Person(firstName = "Elon", age = 45)
Person(firstName = "Elon", lastName = "Mask")
سوال ٿي سگهي ٿو: هي ڇا آهي:
private val lastName: String? = null
اهي ٻيا سواليا نشان ڇا آهن؟ ها، جيڪڏهن قيمت null ٿي سگهي ٿي، پوء اهو مقرر ڪيو ويو آهي ?. هتي پڻ هڪ اختيار آهي جهڙوڪ - !!(جيڪڏهن متغير null قبول نٿو ڪري سگهي). پنهنجي باري ۾ پڙهو، اهو سڀ ڪجهه آسان آهي. ۽ اسان اڳتي هلي ايندڙ نقطي ڏانهن وڃو. واڌايون . هي ڪوٽلن ۾ هڪ تمام بهترين اوزار آهي جيڪو جاوا ۾ موجود ناهي. ڪڏهن ڪڏهن هڪ منصوبي ۾ اسان ٽيمپليٽ طريقا استعمال ڪندا آهيون جيڪي ڪيترن ئي طبقن ۾ ورجائيندا آهن. مثال طور، هن طرح:
Toast.makeText(this, "hello world :)", Toast.LENGTH_SHORT).show();
ڪوٽلن ۾ اسين ڪلاس وڌائي سگھون ٿا:
fun Context.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
۽ پوء ان کي سڄي منصوبي ۾ استعمال ڪريو:
context?.toast("hello world")
اسان Context class لاءِ واڌ ڪئي. ۽ هاڻي جتي به حوالو موجود هوندو، ان جو نئون ٽوسٽ طريقو موجود هوندو. اهو ڪنهن به طبقي لاءِ ٿي سگهي ٿو: اسٽرنگ، فريگمينٽ، توهان جا ڪسٽم ڪلاس، ڪا به پابندي ناهي. ۽ آخري نقطو جيڪو اسان ڏسندا سين ڪم ڪرڻ سان Strings . هتي سڀ ڪجھ سادو آهي. جاوا ۾ اهو هن طرح لکيو ويو آهي:
String s = "friends";
int a = 5;
System.out.println("I have" + a + s + "!");
اهو Kotlin ۾ آسان آهي:
val s = "friends"
val a = 5
println("I have $a $s!")
هي اهي nuances آهن جن تي مون کي ڪوٽلن سکڻ جي شروعات ۾ ڌڪ لڳو، مون کي اميد آهي ته هي توهان جي مدد ڪندو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION