<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # 多平臺程序設計 >[warning] 多平臺項目是 Kotlin 1.2 與 1.3 中的實驗性特性。本文檔中描述的所有的語言與工具特性在未來的版本中都可能會有所變化。 在所有平臺上都能用是 Kotlin 的一個明確目標,但我們將其視為一個更重要的目標——在多個平臺之間共享代碼的前提。有了對 JVM、Android、JavaScript、iOS、Linux、Windows、Mac 甚至像 STM32 這樣的嵌入式系統的支持,Kotlin 可以處理現代應用程序的任何組件與所有組件。這為代碼與專業知識的復用帶來了寶貴的收益,節省了工作量去完成更具挑戰任務,而不是將所有東西都實現兩次或多次。 ## 它是如何工作的 總得來說,多平臺并不是為所有平臺編譯全部代碼。這個模型有其明顯的局限性,我們知道現代應用程序需要訪問其所運行平臺的獨有特性。Kotlin 并不會限制你只使用其中所有 API 的公共子集。每個組件都可以根據需要與其他組件共享盡可能多的代碼,而通過語言所提供的 [`expect`/`actual` 機制](http://www.hmoore.net/alex_wsc/android_kotlin/1318337)可以隨時訪問平臺 API。 以下是在極簡版日志框架中公共邏輯與平臺邏輯之間代碼共享與交互的<!-- -->示例。其公共代碼如下所示: <div style="display:flex"> <div class="sample" markdown="1" theme="idea" data-highlight-only> ```kotlin enum class LogLevel { DEBUG, WARN, ERROR } internal expect fun writeLogMessage(message: String, logLevel: LogLevel) fun logDebug(message: String) = writeLogMessage(message, LogLevel.DEBUG) fun logWarn(message: String) = writeLogMessage(message, LogLevel.WARN) fun logError(message: String) = writeLogMessage(message, LogLevel.ERROR) ``` </div> <div style="margin-left: 5px;white-space: pre-line; line-height: 18px; font-family: Tahoma;"> <div style="display:flex">├<i style="margin-left:5px">為所有平臺編譯</i></div> <div style="display:flex">├<i style="margin-left:5px">預期的平臺相關 API</i></div> <div style="display:flex">├<i style="margin-left:5px">可在公共代碼中使用預期的 API</i></div> </div> </div> 它期待目標平臺為 `writeLogMessage` 提供平臺相關實現,然后公共代碼就可以使用此聲明而無需考慮它是如何實現的。 在 JVM 上,可以提供一個將日志寫到標準輸出的實現: ```kotlin internal actual fun writeLogMessage(message: String, logLevel: LogLevel) { println("[$logLevel]: $message") } ``` 在 JavaScript 世界中可用的是一組完全不同的 API,因此可以實現為將日志記錄到控制臺: ```kotlin internal actual fun writeLogMessage(message: String, logLevel: LogLevel) { when (logLevel) { LogLevel.DEBUG -> console.log(message) LogLevel.WARN -> console.warn(message) LogLevel.ERROR -> console.error(message) } } ``` 在 1.3 中我們重新設計了整個多平臺模型。我們用于描述多平臺 Gradle 項目的[新版 DSL](http://www.hmoore.net/alex_wsc/android_kotlin/1318338)更加靈活,我們會繼續努力使項目配置更加簡單。 ## 多平臺庫 公共代碼可以依賴于一組涵蓋日常任務的庫,例如 [HTTP](https://ktor.kotlincn.net/clients/http-client/multiplatform.html)、 [serialization](https://github.com/Kotlin/kotlinx.serialization) 以及[協程管理](https://github.com/Kotlin/kotlinx.coroutines)。此外,豐富的標準庫在所有平臺上都可用。 你可以隨時編寫自己的庫,提供一個公共的 API,而在每個平臺上以不同的方式實現。 ## 使用場景 ### Android——iOS 移動平臺之間共享代碼是 Kotlin 多平臺的主要使用場景之一,現在可以通過在 Android 與 iOS 之間共享部分代碼(如業務邏輯、連接等)來構建移動應用。 參見:[多平臺項目:iOS 與 Android](https://www.kotlincn.net/docs/tutorials/native/mpp-ios-android.html) ### 客戶端——服務端 代碼共享可以帶來收益的另一個場景是互聯應用,其中的邏輯可以在服務器與運行在瀏覽器中的客戶端中復用。Kotlin 多平臺也覆蓋了這個場景。 [Ktor 框架](https://ktor.kotlincn.net/)適用于在互聯系統中構建異步的服務器與客戶端。 ## 如何開始 ![](http://www.kotlincn.net/assets/images/landing/native/book.png)Tutorials and Documentation Kotlin 新手?可以看看[入門][Getting Started](http://www.kotlincn.net/docs/reference/basic-syntax.html)頁。 建議的文檔頁: - [搭建一個多平臺項目](http://www.hmoore.net/alex_wsc/android_kotlin/1318338) - [平臺相關聲明](http://www.hmoore.net/alex_wsc/android_kotlin/1318337) 推薦的教程: - [多平臺 Kotlin 庫](https://www.kotlincn.net/docs/tutorials/mpp/multiplatform-library.html) - [多平臺項目:iOS 與 Android](https://www.kotlincn.net/docs/tutorials/native/mpp-ios-android.html) ![](http://www.kotlincn.net/assets/images/landing/native/try.png)示例項目 - [KotlinConf app](https://github.com/JetBrains/kotlinconf-app) - [KotlinConf Spinner app](https://github.com/jetbrains/kotlinconf-spinner) 在 [GitHub](https://github.com/JetBrains/kotlin-examples) 上還有更多示例
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看