Skip to content

測試頁面

這是一個包含圖片的區塊(取自 Compose Multiplatform 快速入門 教學)。

第一步 使用 Kotlin 建立 Spring Boot 專案
第二步 在 Spring Boot 專案中新增資料類別
第三步 為 Spring Boot 專案新增資料庫支援
第四步 使用 Spring Data CrudRepository 進行資料庫存取>

同步索引標籤

kotlin
plugins {
    kotlin("kapt") version "1.9.23"
}
groovy
plugins {
    id "org.jetbrains.kotlin.kapt" version "1.9.23"
}
kotlin
plugins {
    kotlin("plugin.noarg") version "1.9.23"
}
groovy
plugins {
    id "org.jetbrains.kotlin.plugin.noarg" version "1.9.23"
}

區段

摺疊區段

這裡有一些文字和一個程式碼區塊:

kotlin
plugins {
    kotlin("plugin.noarg") version "1.9.23"
}

程式碼區塊

這只是一個程式碼區塊:

kotlin
    import java.util.*

@Service
class MessageService(val db: MessageRepository) {
    fun findMessages(): List<Message> = db.findAll().toList()

    fun findMessageById(id: String): List<Message> = db.findById(id).toList()

    fun save(message: Message) {
        db.save(message)
    }

    fun <T : Any> Optional<out T>.toList(): List<T> =
        if (isPresent) listOf(get()) else emptyList()
}

可展開的程式碼區塊

kotlin
package com.example.demo

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController

@SpringBootApplication
class DemoApplication

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args)
}

@RestController
class MessageController {
    @GetMapping("/")
    fun index(@RequestParam("name") name: String) = "Hello, $name!"
}

可執行的程式碼區塊

kotlin
data class User(val name: String, val id: Int)

fun main() {
    val user = User("Alex", 1)
    
    // 自動使用 toString() 函式,以便於閱讀輸出內容
    println(user)            
    // User(name=Alex, id=1)
}

表格

Markdown 表格

原始型別陣列Java 中的對應項
BooleanArrayboolean[]
ByteArraybyte[]
CharArraychar[]
DoubleArraydouble[]
FloatArrayfloat[]
IntArrayint[]
LongArraylong[]
ShortArrayshort[]

XML 表格

最後修改於2023 年 12 月
下次更新2024 年 6 月

內含程式碼區塊的 XML 表格

簡單表格:

之前現在
kotlin
kotlin {
    targets {
        configure(['windows',
            'linux']) {
        }
    }
}
kotlin
kotlin {
    targets {
        configure([findByName('windows'),
            findByName('linux')]) {
        }
    }
}

更複雜的表格:

之前現在
jvmMain 編譯的相依性
kotlin
jvm<Scope>
kotlin
jvmCompilation<Scope>
kotlin
dependencies {
    add("jvmImplementation",
        "foo.bar.baz:1.2.3")
}
kotlin
dependencies {
    add("jvmCompilationImplementation",
        "foo.bar.baz:1.2.3")
}
jvmMain 原始碼集的相依性
kotlin
jvmMain<Scope>
jvmTest 編譯的相依性
kotlin
jvmTest<Scope>
kotlin
jvmTestCompilation<Scope>
jvmTest 原始碼集的相依性
kotlin
jvmTest<Scope>

清單

有序清單

  1. 第一點

  2. 第二點

  3. 第三點

    1. 第三點之 1
    2. 第三點之 2
    3. 第三點之 3
      1. 第三點之 1 與 1
  4. 內含程式碼區塊:

    kotlin
    jvmTest<Scope>

無序清單

  • 第一個項目

  • 第二個項目

  • 第三個項目

    • 還有一個
    • 另一個
      • 哇,還有一個
  • 內含程式碼區塊:

    kotlin
    jvmTest<Scope>

定義列表

可摺疊項目 #1

CrudRepository 介面中 findById() 函式的傳回型別是 Optional 類別的執行個體。然而,為了保持一致性,傳回包含單一訊息的 List 會更方便。為此,您需要解開 Optional 值(如果存在),並傳回包含該值的列表。這可以實作為 Optional 型別的 擴充函式

在程式碼 Optional<out T>.toList() 中,.toList()Optional 的擴充函式。擴充函式允許您為任何類別編寫額外的函式,當您想要擴充某些程式庫類別的功能時,這特別有用。

可摺疊項目 #2

此函式的工作原理是假設新物件在資料庫中沒有 ID。因此,插入時 ID 應為 null

如果 ID 不是 nullCrudRepository 會假設該物件已存在於資料庫中,且這是一個更新操作,而非插入操作。在插入操作之後,id 將由資料存儲產生並重新指派給 Message 執行個體。這就是為什麼 id 屬性應使用 var 關鍵字宣告的原因。

文字元素

變數

  • 變數使用:最新 Kotlin 版本為 2.4.10

嵌入元素

來自 YouTube 的影片

圖片

一般 (Markdown):

建立測試

一般 (XML):

Multiplatform Web 精靈

行內:

YouTrack

可縮放:

類別圖

按鈕樣式:

建立專案

備註

警告:

kapt 編譯器外掛程式中對 K2 的支援處於實驗性階段。 需要選擇性加入(opt-in,詳見下文),且您應僅將其用於評估目的。

備註:

至於 Kotlin/Native 隨附的原生平台程式庫(如 Foundation、UIKit 和 POSIX),只有部分 API 需要透過 @ExperimentalForeignApi 進行選擇性加入。在這種情況下,您會收到一則帶有選擇性加入要求的警告。

提示:

至於 Kotlin/Native 隨附的原生平台程式庫(如 Foundation、UIKit 和 POSIX),只有部分 API 需要透過 @ExperimentalForeignApi 進行選擇性加入。在這種情況下,您會收到一則帶有選擇性加入要求的警告。