زبان Kotlin  چیست ؟
1397/03/02 13:01 , بهزاد ناظمی

زبان Kotlin چیست ؟

Kotlin چیست؟

Kotlin  یک JVM  مبتنی بر زبان ایجاد شده توسط JetBrains، تیم IntelliJ است، که پایه ای برای آندروید استودیو است. این یک زبان شی گرا است که شامل بسیاری از ایده های برنامه نویسی کاربردی است.

کوتلین با ایده پوشش دادن شکاف های جاوا متولد شد و به سادگی ما را از نوشتن کدی هایی که ممکن است اشتباه و خطا  باشند، رها کرد.

چرا kotlin  ؟

اولین مورد برای رفع مسئولیت من این است که من هیچ جایگزین دیگری برای کوتلین مانند Go یا Scala را امتحان نکردم، بنابراین توصیه می کنم، در مورد کسانی که با  آن زبان ها کار کرده اند تحقیق کنید ، اگر فکر واقعا به فکر تغییر زبان برنامه نویسی خود هستید.

اینها دلایلی است که من kotlin  را به عنوان یک مورد مطالعه انتخاب کردم:

  • منحنی نسبتا سریع یادگیری: در مقایسه با Scala به عنوان مثال، ما در محدوده بسیار ساده تر حرکت می کنیم. Kotlin بسیار محدودتر است، اما اگر قبل از شروع به یادگیری آن از زبان دیگری استفاده نکرده باشید بسیار راحت تر است.
  • سبک وزن: کتابخانه Kotlin  نسبت به دیگران کوچکتر است. این نکته مهمی است، زیرا در آندروید محدود کردن همیشه یک مشکل است و اگرچه گزینه هایی برای حل آن مانند proguard یا mulidexing وجود دارد، همه این راه حل ها باعث پیچیدگی و صرف زمان زیادی هنگام اشکال زیادی می شود.
  • بسیار تعامل گرا : قابیلت تعامل و کار با هر کتابخانه دیگری از جاوا را دارد و این همکاری بسیار ساده است. این یکی از ایده های اصلی تیم  Kotlin  هنگام توسعه این زبان جدید بوده است. آنها می خواهند از آن برای ادامه کار توسعه پروژه های فعلی خود در جاوا، بدون نیاز به بازنویسی کل کد استفاده کنند. بنابراین Kotlin  باید با کد جاوا سازگار باشد.
  • به طور کامل با Android Studio و Gradle یکپارچه شده است: ما یک افزونه برای IDE و یکی دیگر برای Gradle داریم، بنابراین شروع پروژه Android با Kotlin مشکلی نخواهد داشت.

با کوتلین چه کاری میشه کرد؟

جلوگیری از تکرار هنگام استفاده از Kotlin بسیار آسان تر است زیرا موقعیت های معمولی به طور پیش فرض در زبان پوشش داده شده است.

به عنوان مثال، در جاوا، اگر ما می خواهیم یک کلاس داده معمولی ایجاد کنیم، باید این کد را بنویسیم (یا حداقل آن را تولید کنیم):

public class Artist {
2	    private long id;
3	    private String name;
4	    private String url;
5	    private String mbid;
6	 
7	    public long getId() {
8	        return id;
9	    }
10	 
11	    public void setId(long id) {
12	        this.id = id;
13	    }
14	 
15	    public String getName() {
16	        return name;
17	    }
18	 
19	    public void setName(String name) {
20	        this.name = name;
21	    }
22	 
23	    public String getUrl() {
24	        return url;
25	    }
26	 
27	    public void setUrl(String url) {
28	        this.url = url;
29	    }
30	 
31	    public String getMbid() {
32	        return mbid;
33	    }
34	 
35	    public void setMbid(String mbid) {
36	        this.mbid = mbid;
37	    }
38	 
39	    @Override public String toString() {
40	        return "Artist{" +
41	                "id=" + id +
42	                ", name='" + name + '\'' +
43	                ", url='" + url + '\'' +
44	                ", mbid='" + mbid + '\'' +
45	                '}';
46	    }
47	}

این کد در kotlin چقدر طول دارد؟ فقط این کلاس داده ساده:

1	data class Artist(
2	    var id: Long, 
3	    var name: String, 
4	    var url: String, 
5	    var mbid: String)

امنیت در مقابل فایل های null

هنگامی که ما با  جاوا برنامه نویسی می کنیم، بیشتر کدهای ما حالت دفاعی دارد.

ما باید قبل از استفاده از آن به صورت دائمی در مورد موارد null برسی انجام دهیم، اگر نمی خواهیم که مشکلات غیرمنتظره ای رخ دهد.

Kotlin ، مانند بسیاری از زبان های دیگر، در مقابل فایل های null مقاوم است، زیرا  باید با صراحت مشخص شود که آیا یک شی با  فرآخوانی یک عملگر امن ، پوچ خواهد شد ؟

می توانیم فرآیند زیر را انجام دهیم:

1	//This won´t compile. Artist can´t be null
2	var notNullArtist: Artist = null
3	 
4	//Artist can be null
5	var artist: Artist? = null
6	 
7	// Won´t compile, artist could be null and we need to deal with that
8	artist.print()
9	 
10	// Will print only if artist != null
11	artist?.print()
12	 
13	// Smart cast. We don´t need to use safe call operator if we previously checked nullity
14	if (artist != null) {
15	    artist.print()
16	}
17	 
18	// Only use it when we are sure it´s not null. Will throw an exception otherwise.
19	artist!!.print()
20	 
21	// Use Elvis operator to give an alternative in case the object is null
22	val name = artist?.name ?: "empty"

توابع فرعی

ما می توانیم توابع جدید را به هر کلاسی اضافه کنیم. این یک جایگزین بسیار قابل فهم نسبت به کلاسهای ابزارهای معمولی که همه در پروژه هایمان داریم ،است.

بعنوان مثال می توانیم روش جدیدی را به قسمت های مختلف نشان دادن متغییر toast اضافه کنیم:

1	fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
2	    Toast.makeText(getActivity(), message, duration).show()
3	}

اکنون می توانیم این کار را انجام دهیم :

fragment.toast("Hello world!")

پشتیبانی عملیاتی (Lambdas)

اگر بجای نوشتن چند باره یک متن جدید ، اعلام کنیم که یک کلیک چه باید انجام دهد، می توانیم فقط آنچه را که می خواهیم انجام دهیم، تعریف کنیم؟ ما واقعا می توانیم. این (و چیزهای بسیار جالبتر) چیزی است که ما به لطف استفاده از Lambda می توانیم انجام دهیم:

view.setOnClickListener { toast("Hello world!") }

 

        برگرفته از : https://antonioleiva.com

از آخرین دوره های آموزشی و تخفیف ها مطلع شوید

با تکمیل فرم زیر ، از اخبار و اطلاعات به روز برنامه نویسی و تکنولوژی عقب نمانید

آخرین مطالب

آموزش جامع SQL Server (جلسه ۱۲)
آموزش جامع SQL Server (جلسه ۱۲)

دستور UPDATE در SQL Server برای تغییر داده‌های موجود در یک جدول، از دستور UPDATE به شکل زیر استفاده ...

آموزش جامع SQL Server (جلسه ۱۵)
آموزش جامع SQL Server (جلسه ۱۵)

دستور DROP TABLE در SQL Server گاهی، لازم است یک جدول که دیگر استفاده‌ای ندارد را حذف کنید. برای ...

آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)
آموزش جامع SQL Server (جلسه ۳۵: Window Functionها – بخش ۲)

بخش اول از آخرین مبحث دوره جامع آموزش SQL Server در جلسه قبلی بررسی شد. این مبحث که ...

آخرین دیدگاه ها

دیدگاه خود را درباره این پست بنویسید

فرم ارسال نظرات