प्रौद्योगिकी साझेदारी

कोटलिन बहुमञ्च (KMP) .

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

कोटलिन बहुमञ्च

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

1.केएमपी किम् ?

Kotlin Multiplatform इति एकं साधनं यत् अस्मान् एकस्मिन् एव प्रोग्रामिंग् भाषायां (Kotlin) कोडं लिखितुं शक्नोति, यत् एकस्मिन् समये भिन्न-भिन्न-यन्त्रेषु, यथा मोबाईल-फोनेषु, सङ्गणकेषु, जालपुटेषु च चालयितुं शक्नोति एतत् कृत्वा समयस्य रक्षणं भवति यतोहि प्रत्येकस्य यन्त्रस्य कृते समानं कार्यक्षमतां पुनर्लेखनस्य आवश्यकता नास्ति ।

2. लक्षणानि कानि सन्ति ?

विशेषता १: कोडसाझेदारी – तर्कसङ्केतः, यथा गणनाकार्यं, एकवारं लिखितुं शक्यते ततः एण्ड्रॉयड् तथा आईओएस एप्स् इत्येतयोः मध्ये उपयोक्तुं शक्यते ।
विशेषता २: मञ्च-विशिष्ट-सङ्केतः – मञ्चस्य विशिष्टानि विशेषतानि, यथा यन्त्रस्य कॅमेरा-उपयोगः, नियन्त्रयितुं प्रत्येकस्य मञ्चस्य कृते विशिष्टः कोडः लिखितुं शक्यते । यथा, एण्ड्रॉयड् अनुप्रयोगे चित्राणि ग्रहीतुं Android इत्यस्य Camera API इत्यस्य उपयोगं कुर्वन्तु, चित्रं ग्रहीतुं च iOS अनुप्रयोगे iOS इत्यस्य UIImagePickerController इत्यस्य उपयोगं कुर्वन्तु ।
विशेषता 3: अन्तरक्रियाशीलता – Kotlin Multiplatform विद्यमानजावा, Swift अथवा Objective-C कोडेन सह अन्तरक्रियां कर्तुं शक्नोति, येन विद्यमानपरियोजनासु एकीकरणं सुलभं भवति
विशेषता 4: भिन्नाः संकलनकालाः – androidMain इत्यत्र कोडः kotlin/jvm इत्यस्य उपयोगेन कोडरूपेण संकलितः भवति यत् Android अवगन्तुं शक्नोति, तथा च iosMain इत्यत्र कोडः kotlin/native इत्यस्य उपयोगेन कोडमध्ये संकलितः भवति यत् ios अवगन्तुं शक्नोति।

3. क्रॉस-टर्मिनल फंक्शन्स् कथं करणीयम्

चरण:
1. साझा तर्कं परिभाषयन्तु : प्रथमं साझामॉड्यूले सामान्यव्यापारतर्कं परिभाषयन्तु (अर्थात् commonMain एते कोडाः कस्मिन् अपि मञ्चे न निर्भराः भवन्ति, अतः ते कस्मिन् अपि मञ्चे चालयितुं शक्नुवन्ति -अन्त साझाकरणम्।
साझा तर्क (सामान्यमुख्य): .

import kotlin.random.Random
class Greeting {
    private val platform: Platform = getPlatform()

    fun greet(): String {
        val firstWord = if (Random.nextBoolean()) "Hi!" else "Hello!"

        return "$firstWord Guess what this is! > ${platform.name.reversed()}!"
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

उपर्युक्तः कोडः kmp cross-end इत्यत्र साझाः कोडः अस्ति तथापि, एषः कोडः अन्ततः एकं स्ट्रिंग् प्रारूपं प्रत्यागच्छति। terminal, यतः platform.name प्राप्तुं kotlin वाक्यविन्यासः Android तथा ios इत्यत्र भिन्नः अस्ति, अतः अस्माभिः androidMain तथा iosMain इत्येतौ वक्तुं बहानानि परिभाषितव्यानि, तथा च भवन्तौ क्रमशः platform.name प्राप्तुं तर्कं ददति अहं तस्य निवारणं करिष्यामि,। ततः ते एतत् तर्कं कार्यान्वितुं आरभन्ते

interface Platform {
    val name: String
}

expect fun getPlatform(): Platform

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. मञ्चविशिष्टं कार्यान्वयनम् : androidMain तथा iosMain इत्यत्र commonMain इत्यस्मिन् अन्तरफलकस्य विशिष्टं कार्यान्वयनम् प्रदातव्यं, तथा च केषाञ्चन मञ्चविशिष्टानां आवश्यकतानां कृते कोडं लिखन्तु।
एण्ड्रॉयड् मञ्चस्य कार्यान्वयनम् (androidMain):

import android.os.Build

class AndroidPlatform : Platform {
    override val name: String = "Android ${Build.VERSION.SDK_INT}"
}

actual fun getPlatform(): Platform = AndroidPlatform()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

iOS मञ्चस्य कार्यान्वयनम् (iosMain):

import platform.UIKit.UIDevice

class IOSPlatform: Platform {
    override val name: String = UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}

actual fun getPlatform(): Platform = IOSPlatform()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

तौ आज्ञापालनपूर्वकम् अवदताम्, "ठीकम् भ्राता, वयं भवतः कृते तत् कार्यान्विष्यामः" इति एण्ड्रॉयड् पक्षः अवदत्, "भ्राता, मया एतत् कथं कार्यान्वितम्" इति, iOS पक्षः च अवदत्, "भ्राता, एतत् एव मया कार्यान्वितम्" इति इत्~~~"