آموزش مقدمات زبان Kotlin
Kotlin زبان جدید برنامه نویسی اندروید است که مورد استقبال بسیازی از برنامه نویسان اندروید قرار گرفته است. در این مقاله قصد داریم تا بخشی از syntax های این زبان را مورد بررسی قرار دهیم. در این سری مقالات سعی میکنیم٬ زبان Kotlin را از دید یک برنامه نویس جاوا فراگیریم.
متغیر ها
متغیر ها یکی از مهم ترین بخش های هر زبان برنامه نویسی هستند. بنابراین شیوه تعریف متغیر ها را در بررسی میکنیم. نوع متغیر ها در زبان kotlin مانند زبان جاوا است با این تفاوت که برای تعریف یک متغیر تعریف نوع آن اجباری نیست.
String var = "variable in java"; var variable: String = "Variable in Kotlin" var varibale2 = "Variable in kotlin"
همانطور که مشاهده میکنید٬ در Kotlin نیازی نیست در پایان هر خط (;) قرار دهیم. همانطور که میدانیم٬ متغیر ها٬ متناسب با نوع تعریف و نوع ساختار آنها٬ میتوانند Muttable و Immutable باشند. متغیر های Muttable متغیر هایی هستند که میتوانند مقدار جدید اختیار کنند و یا بروزرسانی شود و به طبع در مقابل آن کلاس های Immutable هستند که قابل بروزرسانی و دریافت مقدار جدید نیستند. برای نمونه میتوان به کلاس String در جاوا اشاره داشت. وقتی یک متغیر از نوع String تعریف میکنیم٬ متد های کلاس String تغییری در مقدار اصلی بوجود نمیآورند و هر یک از متد ها٬ یک String جدید را تولید میکند. مانند وقتی که از متد substring استفاده میکنیم٬ مقدار ایجاد شده یک String جدید است و مقدار قبلی هیچ تغییری نکرده است. همچنین یک متغیر را استفاده از کلمه final در جاوا میتواند به صورت Immutable تعریف شود٬ یعنی نمیتواند مقدار جدیدی اختیار کند. متغیر های final به این صورت تعریف میشوند:
final String finalVar = "final variable in Java"; val final="final variable in kotlin"
و همانطور که مشاهده میکنید٬ کلمات کلیدی نیز در این دو زبان متفاوت است.
متغیر های nullable
متغیر ها در زبان Kotlin و با ساختار تعریفی فوق٬ نمیتوانند مقدار null داشته باشند. اگر بخواهیم به متغیر این امکان را دهیم که مقدار آن null باشد٬ باید در تعریف٬ آن را به صورت nullable تعریف کنیم:
var nullableVar : String? = null
حال اگر بخواهیم lین مقدار را به یک متغیر دیگر اختصاص دهیم٬ نمیتوانیم به صورت مستقیم این انتصاب را انجام دهیم:
var varValue: String varValue = nullableVar
و در اینجا با خطای کامپایلری مواجه میشویم. برای این کار میتوانیم از دو روش استفاده کنیم.
- با استفاده از force operator٬ مقدار آن را به متغیر جدید اختصاص دهیم و به کامپایلر این اطمینان را دهیم که این مقدار برابر با null نیست. در صورت null بودن مقدار آن٬ در زمان اجرا با خطا مواجه میشویم
var varValue: String varValue = nullableVar!!
- پس از چک کردن مقدار متغیر٬ مقدار را به متغیر جدید بدهیم
var varValue: String varValue = nullableVar ?: "no value"
آرایه ها
پس از متغیر ها٬ آرایه ها نوع دیگری از ساختار زبان هستند٬ که مجموعه ای از متغیر های پیوسته بهم را تشکیل میدهند. چون در تعریف متغیر ها در Kotlin فارغ از زبان هستیم٬ میتواینم یک آرایه را به این صورت تعریف کنیم که البته در ساختار زبانی جاوا نیز امکان پذیر است اما شیوه رایجی نیست:
// array in java Object[] array = {1, "2", '3'}; //array in kotlin var array = arrayOf(1, "2", '3') var array2: Array<Any> = arrayOf(1, "2", '3')
اگر بخواهیم آرایه در Kotlin تنها نوعی خاصی از متغیر ها را بپذیرد٬ باید نوع آن را به صورت Array<Type> تعریف کنیم که در مثال فوق Type را برابر Any قرار دادیم تا هر نوع متغیری را دریافت کند. آرایه ها شامل متد هایی میشود که میتوانید لیست آنها را از اینجا مشاهده کنید. در آموزش های Kotlin به صورت کامل این متد ها را بررسی خواهیم کرد. همچنین میتوانیم در هنگام ایجاد یک آرایه به گونه ای عمل کنیم که بر اساس index, مقادیر هر خانه را ایجاد کند:
val array = Array(10,{index-> index * 3})
به این ترتیب آرایه فوق٬ مضارب ۱ تا ۱۰ عدد ۳ را نگهداری میکند.
Range
یکی از ویژگی هایی که زبان Kotlin دارد٬ این است که از Range میتوان در آن استفاده کرد. اگر در زبان جاوا بخواهیم از Range استفاده کنیم٬ میتوانیم از کلاس Range موجود در Apache Common Lang استفاده کنیم. اما در Kotlin میتوانیم به این صورت استفاده کنیم:
val numberRange: IntRange = 0..100 val charRange: CharRange = 'a'..'Z' val stringRange = "A".."F" val numRange: IntRange = 10.rangeTo(20)
و به این ترتیب میتوانیم با استفاده از کلمه کلیدی in٬ وجود یک مقدار در این بازه را مشخص کنیم.
val contains: Boolean = 20 in numberRange // true
همچنین میتوانیم شیوه پیمایش را نیز مشخص کنیم:
for (number in evenNumbers) { println(number) // 10 // 12 // 14 // 16 // 18 // 20 }
در کد فوق٬ تمام اعداد زوج بین ۱۰ تا ۲۰ نمایش داده میشود. دیگر متد های موجود در Range را میتوانید در اینجا مشاهده کنید.
دستورات شرطی
در زبان Koltin مانند٬ تمام زبان های برنامه نویسی٬ دستوران شرطی نیز وجود دارند. به دلیل تشابه آن با زبان جاوا٬ از پرداختن به دستورات if/esle صرف نظر میکنیم. مشابه دستور switch/case در Kotlin دستور when است.
var num = 120 when (num) { 0, 1, 2, 3 -> println("less that 4") 5 -> println("number is 5") in 4..6 -> println("between 4 and 6") else -> println("greater than 6") }
دستورات تکرار
در این زبان نیز مانند جاوا٬ دستورات تکرار while و for وحوذ دارند. اما در kotlin امکانات بیشتری نسبت به زبان جاوا در دستورات تکرار داریم. به این صورت میتوانیم اعداد زوج میان صفر تا ۱۰ را نمایش دهیم:
val num : IntRange = 0..10 for (num in num step 2) { println(num) }
همانطور که مشاهده میکنید٬ می توانیم از دستور step استفاده کنیم و شیوه پیمایش را مشخص کنیم. همچنین میتوانیم در یک آرایه٬ هم به شماره خانه و هم به مقدار آن دسترسی داشته باشیم:
val numArray: Array<Int> = arrayOf(1, 3, 5, 7, 9) for ((index, value) in numArray.withIndex()) { print(index) print(" : ") print(value) println() }
نکته
ممکن است در کد فوق٬ این سوال برای شما پیش آید که چرا از چند دستور print استفاده کردهایم و رشته ها و اعداد را با استفاده از عملگر (+) به یکدیگر متصل نکردهایم. این روش در جاوا مرسوم است اما در زبان kotlin میتواینم به این صورت عمل کنیم:
for ((index, value) in numArray.withIndex()) { println("index ($index) : $value") }
در این زبان میتوانیم٬ متعیر ها را با استفاده از ($) درون رشته ها قرار دهیم. همچنین میتوانیم با استفاده از ({}$) حاصل یک دستور را درون رشته قرار دهیم:
val numArray: Array<Int> = arrayOf(1, 3, 5, 7, 9) for ((index, value) in numArray.withIndex()) { println("index ($index) : ${value+1}") } output: index (0) : 2 index (1) : 4 index (2) : 6 index (3) : 8 index (4) : 10
در این مقاله سعی بر این شد تا دستورات مقدماتی Kotlin را مورد بررسی قرار دهیم.
در مقاله بعد مفاهیم بیشتری از Kotlin را بررسی خواهیم کرد.
با ما همراه باشید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.