简单修改结构,写了一点入门内容

This commit is contained in:
SOR
2026-09-08 11:08:44 +08:00
parent 6fd329b20a
commit 44ec8da9b6
5 changed files with 158 additions and 61 deletions
+32
View File
@@ -0,0 +1,32 @@
# 项目的基本结构
## 目录
一般来讲,一个 KMP 项目在生成的时候,长这样
- /
- androidApp/
- desktopApp/
- iosApp/
- webApp/ (JS 已经死了,现在的是 WAMS)
- shared/
- src/
- commonMain/
- commonTest/
- androidMain/
- ......
- build.gradle.kts
- .gitignore
- README.md
- gradle 二进制文件(三大平台各一个)
- gradle.proporties
- local.proporties
- build.gradle.kts
- settings.gradle.kts
如果你的项目还要包含 server 的部分的话,那会稍微复杂一点点
## 各部分用途
所有的共享的部分(如UI,基础逻辑)都写在 `shared/commonMain` 里面,不同平台如果要做不同的效果,那么,相应的代码写在对应的 `Main` 里面,`App` 目录主要控制打包设置和进入软件的窗口设定,虽然可以写针对不同平台的不同效果,但是不推荐。
-57
View File
@@ -1,57 +0,0 @@
# 引入 Kotlin
预计时间 1h
> 如果您会写 Java,那么事情将会**非常**简单。
## 基本语法
### 顶层函数
Kotlin 程序也从 main 函数开始,你可以直接这么写
```kotlin
fun main() {
println("Hello World!")
}
```
可以看到,它有很多 C++ 与 Python 的特点。
### 定义变量
这里不会列举所有写法,只写明最常用的写法。
#### 普通变量和类成员变量
```kotlin
val a: Int // 可以注意到,所有类都以大写开头
val a = 0 // 支持先声明,再赋值
val b = "abc" // 直接赋值省略显式变量类型
var c = 3.0f // 可变变量
const val STR = "常值变量支持String,推荐大写下划线"
```
### 定义普通函数
在 Kotlin 里面,cpp 的 void $\Leftrightarrow$ Kotlin 的 Unit
```kotlin
fun oneFuntion(): Unit {
// do something...
}
```
在函数定义明确的时候是不需要指明返回值的,除非是接口或用作 lambda 变量。
### 定义类与接口
## 高级一点
### lambda变量与复杂函数
## 某些独到的 Kotlin 小特性
+120
View File
@@ -0,0 +1,120 @@
# 引入 Kotlin
预计时间 1h
> 如果您会写 Java,那么事情将会**非常**简单。<br>
> 如果您会写 CPP/Python,那么事情将会**较为**简单。
## 基本语法
### 顶层函数
Kotlin 程序也从 main 函数开始,你可以直接这么写
```kotlin
fun main() {
println("Hello World!")
}
```
可以看到,它有很多 C++ 与 Python 的特点。
### 定义变量
这里不会列举所有写法,只写明最常用的写法。
#### 普通变量和类成员变量
```kotlin
val a: Int // 可以注意到,所有类都以大写开头
val a = 0xFF // 支持先声明,再赋值,还有经典非十进制写法
val b = "abc" // 直接赋值省略显式变量类型
var c = 3.0f // 可变变量
const val CONST_STR = "常值变量支持String,推荐大写下划线"
```
### 定义普通函数
在 Kotlin 里面,cpp 的 void $\Leftrightarrow$ Kotlin 的 Unit
```kotlin
fun oneFuntion(): Unit {
// do something...
}
```
参数需指明变量类型,支持变长参数,不支持字典
```kotlin
fun thisFuntion(int: Int, vararg folders: String): Int {
// do something...
}
fun thatFuntion(vararg folders: String): String {
val a = thisFuntion(1, *folders) // 与 Python 写法一致
// do something...
}
```
在函数定义明确的时候是不需要指明返回值的,除非是接口或用作 lambda 变量。
### 定义类与接口
```kotlin
class MyClass() {}
interface MyInterface() {}
```
## 高级一点
### 列表
```kotlin
val list = ListOf(1, 2, 3, 4, 5, 6) // List 不可变
val array = arrayOf("1", "2", "3") // array 可变长
```
### lambda变量与复杂函数
```kotlin
// 定义一个 lambda 很方便
val func = { firstVal: Int, secVal: String ->
secVal + firstVal // 不写 return 则默认最后一行是返回值
}
```
func 变量的类型是 `(Int, String) -> String`,简单易懂
当函数的最后一行是 lambda 变量时,可以在调用时简化
```kotlin
fun doOrNull(
obj: SomeClass?, // 问号表示类型可空
func: (SomeClass) -> Int
): Int? {
return if (obj == null) obj // if 可以被直接返回,这代替了三目运算符
else func(obj)
}
// 使用时
val a = doOrNull(b) { someClass -> someClass.c + 1 }
// 在圆括号后直接写 lambda 定义,很方便
```
## 某些独特的 Kotlin 小特性
### 可空变量与对象
```kotlin
```
### if 与 when
```kotlin
```
+2 -2
View File
@@ -4,9 +4,9 @@
> 个人认为,Kotlin 是最好的 JVM 语言。
## 如果你会写 Java
## 如果你会写 Java 或 Cpp/Python
请看 [为会写 Java 的朋友们设计的引入](./引入Kotlin_Java.md)
请看 [为会写其他高级语言的朋友们设计的引入](./引入Kotlin_fast.md)
## 推荐 IDE
+4 -2
View File
@@ -9,12 +9,14 @@
### Kotlin Multiplatform
1. [基本的 UI 结构](Learning/基本的UI结构.md)
2.
1. [基本的项目结构](Learning/基本的项目结构.md)
2. [基本的 UI 结构](Learning/基本的UI结构.md)
3.
### 番外
1. [我做的 FFmpeg 库](Extra/我做了一个KMP的FFmpeg库.md)
2.
## 有关 KMP 的项目结构