درس 3 - نوع داده ها در کاتلین
آموزش زبان برنامه نویسی کاتلین

در این درس به انواع داده ها در زبان برنامه نویسی کاتلین خواهیم پرداخت.

در هر زبان برنامه نویسی داده ها با تنوع مواجه هستند و تعریف و استفاده از نوع داده ها یا متغیرها باید مطالعه و تمرین شود.

Numbers در زبان کاتلین

در زبان برنامه نویسی کاتلین تعریف و استفاده از متغیرها یا داده های نوع عددی بسیار ساده تر از زبان جاوا است ولی در هر حال کاتلین اجازه ی تبدیل نوع داده ها را نمیدهد. در لیست زیر نوع متغیرهای عددی در زبان برنامه نویسی کاتلین را آورده ایم و طول آنها را هم مشخص کردیم.

نوع  سایز
Double 64
Float 32
Long 64
Int 32
Short 16
Byte 8

در قطعه کد زیر به زبان برنامه نویسی کاتلین نشان داده ایم که چطور از هر کدام نوع داده های عددی استفاده شود.

fun main(args: Array<String>) {
   val a: Int = 10000
   val d: Double = 100.00
   val f: Float = 100.00f
   val l: Long = 1000000004
   val s: Short = 10
   val b: Byte = 1
   
   println("Your Int Value is "+a);
   println("Your Double  Value is "+d);
   println("Your Float Value is "+f);
   println("Your Long Value is "+l);
   println("Your Short Value is "+s);
   println("Your Byte Value is "+b);
}

وقتی کد های بالا را در هر محیطی که توان اجرای کدهای کاتلین را دارد بنویسید در کنسول نتیجه ی زیر را مشاهده خواهید کرد.

Your Int Value is 10000
Your Double  Value is 100.0
Your Float Value is 100.0
Your Long Value is 1000000004
Your Short Value is 10
Your Byte Value is 1

 

Characters یا کاراکتر ها در زبان کاتلین

زبان برنامه نویسی کاتلین کاراکترها را توسط عبارت کلیدی char تعریف میکند. کاراکترها باید درون یک کوتیشین سینگل تعریف شوند بصورت 'c' .

نمونه کد زیر را در محیط کدنویسی خود وارد و اجرا کنید تا عملکرد کاراکترها را متوجه شوید.

متغیرهای کاراکتری را نمیتوان مثل متغیرهای عددی در زبان کاتلین تعریف و استفاده کرد. متغیرها در زبان کاتلین با دو کلمه ی var و val تعریف میشوند.

fun main(args: Array<String>) {
   val letter: Char    // defining a variable 
   letter = 'A'        // Assigning a value to it 
   println("$letter")
}

نتیجه ی کد بالا خروجی زیر را در پی خواهد داشت. 

A

 

متغیرهای Boolean در زبان کاتلین

همانند دیگر زبان های برنامه نویسی ، متغیرهای Boolean بسیار ساده هستند. مقدار متغیرهای Boolean معمولا دو مقدار قبول میکند true یا false.

در مثال زیر نحوه ی تعریف و استفاده از متغیرهای Boolean در زبان کاتلین را مشاهده میکنید.

fun main(args: Array<String>) {
   val letter: Boolean   // defining a variable 
   letter = true         // Assinging a value to it 
   println("Your character value is "+"$letter")
}

کدهای بالا نتیجه ی زیر را در خروجی خواهد داشت.

Your character value is true

 

متغیرهای String در زبان کاتلین

متغیرهای String یا رشته ای دنباله یا آرایه ای از کاراکترها هستند. همانند جاوا بصورت نرمال آنها تغییرناپذیر هستند ( immutable ).

دو نوع متغیر از نوع رشته ای یا string در زبان کاتلین داریم. یکی raw String و یکی دیگر escaped String.

در مثال زیر نحوه ی استفاده از این string ها را بررسی خواهیم کرد.

fun main(args: Array<String>) {
   var rawString :String  = "I am Raw String!"
   val escapedString : String  = "I am escaped String!\n"
   
   println("Hello!"+escapedString)
   println("Hey!!"+rawString)   
}

در مثال بالا بعد از escaped String یک خط اضافه تر پرش میشود و سپس بقیه رشته چاپ میشود. نتیجه به شکل زیر است.

Hello!I am escaped String!

Hey!!I am Raw String!

 

Arrays یا آرایه ها در زبان کاتلین

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

fun main(args: Array<String>) {
   val numbers: IntArray = intArrayOf(1, 2, 3, 4, 5)
   println("Hey!! I am array Example"+numbers[2])
}

قطعه کد بالا نتیجه ی زیر را در خروجی نمایش خواهد داد. سیستم ایندکسینگ یا شماره گذاری آرایه ها در زبان کاتلین مشابه دیگر زبان های برنامه نویسی خواهد بود.

در مثال ما دنبال ایندکس شماره ی 2 میگردیم و مقدار آن 3 است که در زیر چاپ شده است.

Hey!! I am array Example3

 

Collection ها در زبان کاتلین

Collection ها یکی از متفاوت ترین نوع داده ها هستند که توسعه ی اپلیکیشن ها را راحت تر میکنند. در زبان برنامه نویسی کاتلین دو نوع از collection ها وجود دارد.

  1. immutable collection قابل ویرایش نیستند.
  2. mutable collection قابل ویرایش هستند.

بخاطر سپردن نوع collection ها بسیار اهمیت دارد چون کاتلین هیچ تفاوتی بین آنها قائل نمیشود.

fun main(args: Array<String>) { 
   val numbers: MutableList<Int> = mutableListOf(1, 2, 3) //mutable List 
   val readOnlyView: List<Int> = numbers                  // immutable list 
   println("my mutable list--"+numbers)        // prints "[1, 2, 3]" 
   numbers.add(4) 
   println("my mutable list after addition --"+numbers)        // prints "[1, 2, 3, 4]" 
   println(readOnlyView)     
   readOnlyView.clear()    // ⇒ does not compile  
// gives error  
}

کد بالا نتیجه ی زیر را به دنبال خواهد داشت.

یک خطا به ما نمایش داده میشود چون ما قصد داریم یک List را clear یا پاکسازی کنیم در حالیکه آن mutable است.

main.kt:9:18: error: unresolved reference: clear
   readOnlyView.clear()    // -> does not compile  
                 ^

زبان برنامه نویسی کاتلین برای استفاده از collection ها چند متود پرکاربرد ارائه میدهد مثل first , last , filter و ... .

همه ی این متود ها در زبان کاتلین self-descriptive هستند و پیاده سازی آنها بسیار راحت است. علاوه بر این کاتلین در پیاده سازی collection ها درست مثل زبان برنامه نویسی Java است.

در پیاده سازی collection ها روش های مختلفی است که استفاده از آنها اختیاری است مثل Set و Map.

در مثال پایین ، ما Map و Set را توسط متود های مختلفی پیاده سازی کرده ایم.

fun main(args: Array<String>) {
   val items = listOf(1, 2, 3, 4)
   println("First Element of our list----"+items.first())
   println("Last Element of our list----"+items.last())
   println("Even Numbers of our List----"+items.
      filter { it % 2 = = 0 })   // returns [2, 4]
   
   val readWriteMap = hashMapOf("foo" to 1, "bar" to 2)
   println(readWriteMap["foo"])  // prints "1"
   
   val strings = hashSetOf("a", "b", "c", "c")
   println("My Set Values are"+strings)
}

تکه کد بالا نتیجه ی زیر را در خروجی به نمایش خواهد گذاشت.

First Element of our list----1
Last Element of our list----4
Even Numbers of our List----[2, 4]
1
My Set Values are[a, b, c]

 

Range ها در زبان کاتلین

Range ها یکی از ویژگی های منحصر به فرد زبان برنامه نویسی کاتلین است.همانند زبان Haskell این اپراتور به شما کمک میکند در یک Range یا محدوده ی خاصی کاری را انجام دهید.

بصورت باطنی توسط rangeTo پیاده سازی شده است و کاراکتر مورد نظر برای استفاده از این اپراتور دو نقطه ی ساده یا .. است.

در مثال زیر نحوه ی استفاده از Range ها در زبان برنامه نویسی کاتلین را مشاهده میکنید.

fun main(args: Array<String>) {
   val i:Int  = 2
   for (j in 1..4) 
   print(j) // prints "1234"
   
   if (i in 1..10) { // equivalent of 1 < = i && i < = 10
      println("we found your number --"+i)
   }
}

قطعه کدهای بالا نتیجه ی زیر را در خروجی نمایش خواهد داد.

1234we found your number --2

اتمام درس.