سوف نتابع تعلم التعامل مع المتغيرات والدوال الجاهزة في لغة كوتلين
-
تابع الدرس الاول هنا
سوف نكمل مع المتغيرات وطرق التعامل معها مع ايضاً التطرق الى بعض الدوال الجاهزة في اللغة
بنسبة لعمليات الجمع في التدوينة السابقة تم شرح جمع واسناد القيمة الى متغير ثالث ولكن لو اردنا اجراء العملية داخل دالة print ما الطريقة!
يمكن استخدام نفس طريقة للغة java و وضع العملية داخل اقواس
1 2 3 4 |
val i: Int = 7 val f: Int = 2 println("i + f = " + (i+f)) |
النتيجة سوف تكون بشكل المتوقع وهيا 9 ولكن اذا اردنا ان نستخدم طريقة اخرى خاص في لغة كوتلين كيف !
نضع اشارة الدولار ${} ونقوم بعملية داخلهم داخل الدالة فورا
1 |
println("i + f = ${<span class="crayon-v">i</span><span class="crayon-sy">.</span><span class="crayon-e">plus</span><span class="crayon-sy">(</span><span class="crayon-v">f</span><span class="crayon-sy">)</span>}") |
سوف تظهر نفس النتيجة فقد اختلف طريقة التنفيذ
وايضاً ممكن عمل حالة شرطية داخل ${} لتأكد من كود او نتيجة لمتغير boolean “مثال”
1 2 3 |
val a: Boolean println("A is boolean : ${a is Boolean}") |
الخرج من البرنامج سوف يكون
1 |
A is boolean : true |
ونفس الشيئ بنسبة لباقي المتغيرات
1 2 3 |
val a: Char = 'A' println("A is boolean : ${a is Char}") |
Type Casting : طريقة تحويل المتغيرات مثلا من double الى integer
او integer الى char والعكس .. ونفس الشيئ الى الباقي float,short,long
1 2 3 4 5 |
val a: Double = 1.5555 println("A Casting to Int : ${a.toInt()}") println("B Casting to Int : ${'B'.toInt()}") println("B Casting to Char : ${66.toChar()}") |
مع للغة java اعتدنا استخدام for each مع الـ array “مثال”
1 2 3 4 |
for (Iterator<String> i = someList.iterator(); i.hasNext();) { String item = i.next(); System.out.println(item); } |
هذا كود الجافا الذي كنى نستخدمه لعرض نتائج array او اسناد القيم داخلها الى array اخرى
ولكن مع كوتلين الكود اسهل جداً من حيث تعريق المصفوفة وايضا اسناد قيم لها واستدعائها
لنفترض لدينا مصفوفة وبها ارقام من 10 الى 50 ونريد فقط الاعداد الزوجية منها
1 2 3 4 5 |
val myList = 10..50 // اول شيئ تعريف المصفوفة واسناد القيم لها وهنى تم اسناد من الرقم 10 الى الرقم 50 val tList = myList.filter { it % 2 == 0 } // هنى انشأنا مصفوفة اخرى ونفحص المصفوفة الاولة ونسند الارقام الزوجية فقط الى المصفوفة it تمثل ارقام المصفوفة وهي كلمة محجوز في اللغة tList.forEach { a -> println(a) } // هذه الدالة forEach لكتابة النتائج نائخذ النتيجة من المصفوفة في متحول a ونقوم بعرض النتيجة وتتكرر العملية حتى انتهاء عدد المصفوفة |
هنالك ايضاً دالة خاصة بعملية جمع المصفوفة القيم الخاصة في المصفوفة مثلا لدينا عملية ادخال لاسعار نقوم بحفظهم داخل مصفوفة ونريد عند انتهاء الادخال جمعهم وعرض النتيجة
1 2 3 4 |
val myList1 = 1..6 val myList2 = myList1.reduce{a,s -> a+s} println(myList2) |
بهذا الكود البسيط فقط نقوم بجع المصفوفة عن طريق دالة reduce
لتوضيح الكود اكثر
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
fun main (args: Array<String>) { val myList1 = 1..6 /** * array index start from 0 * 0 + 1 * 1 + 2 * 3 + 3 * 6 + 4 * 10 + 5 * 15 + 6 * * result is 21 */ val myList2 = myList1.reduce{a,s -> a+s} println(myList2) } |
بنسبة للمصفوفة ايضاً يمكن تعريفها بشكل المعتاد مثل للغة جافا واسناد قيم لها واستدعاء القيمة حسب رقمها داخل المصفوفة index
1 2 3 4 5 |
val myList: List<String> = listOf("a", "b", "c") println("list first index ${myList.first()}") println("list last index ${myList.last()}") println("list index 2 ${myList.get(1)}") |
بهذه الطريقة ممكن انشاء المصفوفة واستدعاء القيمة الذي تريدها ولكن لا يمكنك اضافة ايا عنصر اليها والسبب ليس انه تم تعريفها كـ val جرب قم بتعريفها var ولن يختلف شيئ سوف ترفض الاضافة لانه عند انشاء المصفوفة لم نعرفها ك مصفوفة قابلة للاضافة او تغير في القيم داخلها
فقط نقوم بتغير اولاً من val الى var وثانياً نوع المصفوفة MutableList
1 2 3 4 |
var myList: MutableList<String> = mutableListOf("a", "b", "c") myList.add("g") println("list last index ${myList.last()}") |
وايضاً لمعرفة حجم المصفوفة
1 |
println("list size index ${myList.size}") |