لا اظنك انك قد تعرفت على كوتلن بعد

لقد اشتقت للتدوين  كثيرا لدي التزمات كثيرة لكنني حصل على القليل من الوقت .
لقد طرحت موضوعا مثل هذا الموضوع من قبل و لقي ترحيبا لا باس به اظنك فهمت كوتلن بشكل خاطئ لن اقول انني وقعت في نفس الخطا انذاك لا زلت اتعلم فناك اشياء لم اتحدت عنها و غفلت عنها و اشياء لم افصل فيها دعني في هذا الموضوع اشرح لك الامر .

في هذا الموضوع ساحول  كوتلن الجميلة الى الكوتلن اللعينة مثل الجافا و  ++c .
 ان كوتلن واحدة من اسهل لغات البرمجة على الاطلاق لكنني اظن انك لا تستغل هذه البساطة ٪100    we talk too much    دعونا ننتقل الى هذه المميزات .
اشياء متقدمة 
من موقع  mindorks.com
1-الدلة الممددة او  Extension Functions
هي خاصية جميلة حقا تتيح التعامل بحرفية في مشاريعك تمكنك من اضافة  دالة الى فئة ما(class) دون المساس بالكود الخاص بالكلاس مثلا كلاس Int لا يمكنك تعديله او اضافة دالة اليه اليك مثلا لتفهم :
فرضا لدينا انك تريد ان تضهر دالة بعد كتابة اي عدد في مشروعك كل ما عليك هو ان تضع هكذا :
fun Int.triple(): Int {
  return this * 3
}
الان لمضاعفة اي عدد ثلات مرات اكتب العدد 5 مثلا ستظهر لك هذه الدالة كاقتراح
var result = 5.triple() // result : 15
لكن ما فائدتها -> الاختصار :
fun ImageView.loadImage(url: String) {
    Glide.with(context).load(url).into(this)
}
//لتحميل الصورة الى اي صورة
imageView.loadImage(url)
حاول تطبيق هده الخاصية فهي الافضل .
  data class :
 واحد من اكثر الاشياء استعمالا على الاندرويد فالدتا كلاس يقوم بتخزين القيم في كلاس و اخد هذه القيم في كلاس اخر اثناء التفيد او ما يسمى في كرة القدم 1-2 .
data class developer(var name:String,var age:Int)


fun main(args: Array<String>) {

//لتخزين المعلومات
val ismail=developer("ismail",19)
//طريقة اخرى
ismail.name="hachour"
ismail.age=18
//لاخد المعلومات
print(ismail.name)
print(ismail.age)
}
Destructuring Declarations :
خاصية جميلة يمكنك استغلالها لكتابة تطبيق افضل من خلال يمكنك الحصول على عدة قيم مخزنة في كلاس من خلال سطر واحد دون الحاجة الى اخد القيم كل مرة :
data class developer(val name:String,val age:Int)

fun main(args: Array<String>) {
val ismail=developer("ismail",19)
//fast way
val (nameo,ageo)=ismail
print(ageo)
}

//result=19
مكتبة anko :
الـى افضل شىء في الكوتلن اكاد اجزم ان افضل شيء حصل لنا نحن المطورون (اندرويد) هي هذه المكتبة
 تنقسم المكتبة الى اربعة افسام :قواعد البيانات | الوجهات dsl | الاختصارات | Coroutines .
 ساتحدث باذن الله عن كل واحدة بالتفصيل لكن ليس الان
قواعد البيانات تستطيع الوصول الى قاعدة البيانات بسرعة من خلال بضع خطوات فقط .
fun getUsers(db: ManagedSQLiteOpenHelper): List<User> = db.use {
    db.select("Users")
            .whereSimple("family_name = ?", "John")
            .doExec()
            .parseList(UserParser)
}
dsl :حسنا لم اكن اهتم بها كثيرا حتى وجدت بالصدفة مقالا يتحدث عن انها اسرع باربع مرات عن ملفات xml فان اعتدت انشاء الوجهات عن طريق xml  فان  ذلك ليس  بالخيار الامثل .
verticalLayout {
    val name = editText()
    button("Say Hello") {
        onClick { toast("Hello, ${name.text}!") }
    }
}
الاختصارات :حسنا Toast لا استعملها ابدا و لا احبها لكن تنفع لتجربة ان كان شيء ما يعمل او لا لهذا اتعصب بشدة عندما اكتبها انظر للتواست كيف تكتب
// الانتقال بين النوافد
startActivity<SomeOtherActivity>("id" to 5)
makeCall(number)
browse(url)
share(text, [subject])
email(email, [subject], [text])
//toast
toast("Hi there!")
longToast("Wow, such duration")
//اضهار شريط في الاسفل
snackbar(view, R.string.message)
longSnackbar(view, "Wow, such duration")
snackbar(view, "Action, reaction", "Click me!") { doStuff() }
//اضهار نافدة منبتقة
alert("Hi, I'm Roy", "Have you tried turning it off and on again?") {
    yesButton { toast("Oh…") }
    noButton {}
}.show() 
val dialog = progressDialog(message = "Please wait a bit…", title = "Fetching data")
Coroutines : لا يكفي الموضوع لشرحها لدى ساخصص واحد لها .
 و يكفي ما اشرت اليه الى موضوع قادم انشاء الله



هل ترغب في مثل هذه التدوينات

اسماعيل ايت بلا

ببساطة ارغب في تجربة جديدة من التعلم من خلال مشاركة ما تعلمه يجبرني ذلك على البحث لمدة طويلة مما يجعل الموقع جديرا بالثقة

اترك لنا تعليقا

الاشتراك بالقائمة البريدية

توصل باحدث مواضيعنا و كن على اطلاع باخر اخبار وتقنيات الاندرويد