الخاصية MatchResult.destructured‎ في Kotlin

من موسوعة حسوب
مراجعة 06:04، 30 أغسطس 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (مراجعة وتدقيق.)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

تمثل الخاصية MatchResult.destructured‎ نسخةً من الصنف Destructured توفّر مكونات عملية الإسناد بالتفكيك (destructuring assignment) التي تطبق على قيم المجموعة المُطابقة.

تطابق الدالة component1 قيمة المجموعة الأولى، وتطابق الدالة component2 قيمة المجموعة الثانية، وهلم جرًا.

البنية العامة

open val destructured: Destructured

القيمة المعادة

تعاد نسخةٌ من الصنف Destructured.

أمثلة

ينشِئ التابع Regex()‎ في الشيفرة التالية تعبيرًا نمطيًا باسم regex لتفكيك مسارات الملفات إلى ثلاث مُركّبات: المجلد (directory) واسم الملف (fileName) والامتداد (extension)، ثم نعرّف سلسلة نصية باسم fullPath تحتوي مسار أحد الملفات، ثم نستخرج من fullPath مجموعات النتائج عبر استدعاء الدالة matchEntire()‎ مع regex وتمرير fullPath إليها كوسيط. نستخدم بعدئذٍ الخاصية MatchResult.destructured لاستخراج مجموعات النتائج:

package com.kotlination.filename

fun main(args: Array<String>) {

    val fullPath = "Kotlination/Kotlin/Practice/getFileNameExample.kt"

    val regex = """(.+)/(.+)\.(.+)""".toRegex()
    val matchResult = regex.matchEntire(fullPath)

    if (matchResult != null) {
        val (directory, fileName, extension) = matchResult.destructured
        println("dir: $directory | fileName: $fileName | extension: $extension")
        // => dir: Kotlination/Kotlin/Practice | fileName: getFileNameExample | extension: kt
    }

}

انظر أيضًا

مصادر